Looks like the pipeline doesn't close after exec() call. So when you try to reuse the same Jedis object after returnResource it still contains pipelinedResponses from previous operation.
Try to do this way:
pipeline.exec();
pipeline.sync();
pool.returnResource(jedis);
sync() call should close the pipeline.