Re: Thread safety of Encoder implementations

2015-02-18 Thread Elizabeth Bennett
Hi Guozhang, Sorry for the delayed response. The code we use for the producer send call looks like this: We instantiate the producer like this: Producer producer = new Producer(config, context.getEventSerializer(), new ProducerHandlerWrapper(config, context.getCallback()), null, context.getPart

Re: Thread safety of Encoder implementations

2015-01-15 Thread Guozhang Wang
Liz, Could you paste your code for calling the producer send call here? Just realized in 0.7 there might be some calling pattern corner cases that cause concurrent access of the serializer. Also, I would recommend you to try out the new version of Kafka (0.8.x), in which each producer will only h

Re: Thread safety of Encoder implementations

2015-01-13 Thread Elizabeth Bennett
Hi Guozhang, Thanks for you response. We've only got one producer client (per Kryo instance) but the producer client is configured (via the broker.list config) to produce to two Kafka brokers. When we create the Producer, we pass in an instance of the serializer. What if we used the serializer.clas

Re: Thread safety of Encoder implementations

2015-01-12 Thread Guozhang Wang
Hi Liz, Do you have multiple producer clients that use the same Kryo serializer objects? Each client will only have one background thread that tries to call serialize(), and hence in that case you will have concurrent access. Guozhang On Mon, Jan 12, 2015 at 5:32 PM, Elizabeth Bennett wrote:

Thread safety of Encoder implementations

2015-01-12 Thread Elizabeth Bennett
Hi Kafka Users, I have written my own implementation of the kafka Encoder class for serializing objects to Messages. It uses Kryo, which is a non-thread safe java serialization library. I'm using Kafka 0.7.2. We recently ran into an issue where we increased the number of kafka brokers for our kafk