I agree with that statement that if producer is closed and try to send
message it will give close.  What we have done is wrap the NEW Producer API
with Old Producer API.  So when I use same code with OLD I do not get this
issue.  It is only problem with NEW Producer.  Regardless of close, state I
think it will be good to have API to check the state of producer (at least
isClosed() API).

If you agree, I can file a Jira Request for STATE check API and let me know
which flavor of State Check API you prefer.


Thanks,

Bhavesh

On Mon, Oct 6, 2014 at 9:34 AM, Jay Kreps <jay.kr...@gmail.com> wrote:

> Hey Bhavesh,
>
> This is a sanity check. If you send a message after calling close on the
> producer you should get this error. It sounds like you have multiple
> threads sending, and you close the producer in the middle of this, then you
> get this error. This is expected.
>
> Perhaps I am misunderstanding?
>
> I think tracking the state (i.e. whether you have called close or not) can
> be done just as easily in your code, right?
>
> -Jay
>
> On Sun, Oct 5, 2014 at 7:32 PM, Bhavesh Mistry <mistry.p.bhav...@gmail.com
> >
> wrote:
>
> > Hi Kafka Dev Team,
> >
> > *java.lang.*
> > *IllegalStateException: Cannot send after the producer is closed.*
> >
> > The above seems to bug.  If the ProducerRecord is in flight within send
> > method is execute and another thread seems to shutdown in the middle of
> > flight  will get error.
> >
> > Thanks,
> >
> > Bhavesh
> >
> > On Sun, Oct 5, 2014 at 7:15 PM, Bhavesh Mistry <
> mistry.p.bhav...@gmail.com
> > >
> > wrote:
> >
> > > Hi Kafka Dev Team,
> > >
> > > The use case is that we need to know producer state in background
> Threads
> > > and so we can submit the message.
> > >
> > > This seems to a bug in trunk code.  I have notice that KafkaProducer
> > > itself does not have close state and inflight message will encounter
> > > following issues.  Should I file bug for this issue ?
> > >
> > > java.lang.IllegalStateException: Cannot send after the producer is
> > closed.
> > >     at
> > >
> >
> org.apache.kafka.clients.producer.internals.RecordAccumulator.append(RecordAccumulator.java:136)
> > >     at
> > >
> >
> org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:237)
> > > .................................................
> > >     at java.util.TimerThread.mainLoop(Timer.java:555)
> > >     at java.util.TimerThread.run(Timer.java:505)
> > >
> > > Thanks,
> > >
> > > Bhavesh
> > >
> > > On Sun, Oct 5, 2014 at 3:30 PM, Bhavesh Mistry <
> > mistry.p.bhav...@gmail.com
> > > > wrote:
> > >
> > >> HI Kafka Dev,
> > >>
> > >> I would like to request state check state so  I can manage the Life
> > Cycle
> > >> of Producer better.   I you guys agree I will file Jira request.  I
> just
> > >> give state of producer can be I would like mange or start (create new
> > >> instance of producer) or restart or close based on state.   I just
> gave
> > >> example, you may add or remove states.
> > >>
> > >> /***
> > >>
> > >> * API TO CHECK STATE OF PRODUCER
> > >>
> > >> *  @Return
> > >>
> > >>
> > >>
> > >>  STATE.INIT_IN_PROGRESS
> > >>
> > >>  STATE.INIT_DONE
> > >>
> > >>  STATE.RUNNING
> > >>
> > >>  STATE.CLOSE_REQUESTED
> > >>
> > >>  STATE.CLOSE_IN_PROGRESS
> > >>
> > >>  STATE.CLOSED
> > >>
> > >> */
> > >>
> > >> public State getCurrentState();
> > >>
> > >> Thanks,
> > >>
> > >> Bhavesh
> > >>
> > >
> > >
> >
>

Reply via email to