calling jssc.stop(false/true,false/true) from streamingListener causes
deadlock , So I created another thread and called jssc.stop from  that but
that too caused deadlock if onBatchCompleted is not completed before
jssc.stop().

So is it safe If I call System.exit(1) from another thread without calling
jssc.stop()- since that leads to deadlock.


On Tue, Aug 11, 2015 at 9:54 PM, Shushant Arora <shushantaror...@gmail.com>
wrote:

> Is stopping in the streaming context in onBatchCompleted event
> of StreamingListener does not kill the app?
>
> I have below code in streaming listener
>
> public void onBatchCompleted(StreamingListenerBatchCompleted arg0) {
> //check stop condition
> System.out.println("stopping gracefully");
> jssc.stop(false,false);
> System.out.println("stopped gracefully");
> }
>
> stopped gracefully is never printed.
>
> On UI no more batches are processed but application is never
> killed/stopped? Whats the best way to kill the app.after stopping context?
>
>
>
> On Tue, Aug 11, 2015 at 2:55 AM, Shushant Arora <shushantaror...@gmail.com
> > wrote:
>
>> Thanks!
>>
>>
>>
>> On Tue, Aug 11, 2015 at 1:34 AM, Tathagata Das <t...@databricks.com>
>> wrote:
>>
>>> 1. RPC can be done in many ways, and a web service is one of many ways.
>>> A even more hacky version can be the app polling a file in a file system,
>>> if the file exists start shutting down.
>>> 2. No need to set a flag. When you get the signal from RPC, you can just
>>> call context.stop(stopGracefully = true) . Though note that this is
>>> blocking, so gotta be carefully about doing blocking calls on the RPC
>>> thread.
>>>
>>> On Mon, Aug 10, 2015 at 12:24 PM, Shushant Arora <
>>> shushantaror...@gmail.com> wrote:
>>>
>>>> By RPC you mean web service exposed on driver which listens and set
>>>> some flag and driver checks that flag at end of each batch and if set then
>>>> gracefully stop the application ?
>>>>
>>>> On Tue, Aug 11, 2015 at 12:43 AM, Tathagata Das <t...@databricks.com>
>>>> wrote:
>>>>
>>>>> In general, it is a little risky to put long running stuff in a
>>>>> shutdown hook as it may delay shutdown of the process which may delay 
>>>>> other
>>>>> things. That said, you could try it out.
>>>>>
>>>>> A better way to explicitly shutdown gracefully is to use an RPC to
>>>>> signal the driver process to start shutting down, and then the process 
>>>>> will
>>>>> gracefully stop the context and terminate. This is more robust that than
>>>>> leveraging shutdown hooks.
>>>>>
>>>>> On Mon, Aug 10, 2015 at 11:56 AM, Shushant Arora <
>>>>> shushantaror...@gmail.com> wrote:
>>>>>
>>>>>> Any help in best recommendation for gracefully shutting down a spark
>>>>>> stream application ?
>>>>>> I am running it on yarn and a way to tell from externally either yarn
>>>>>> application -kill command or some other way but need current batch to be
>>>>>> processed completely and checkpoint to be saved before shutting down.
>>>>>>
>>>>>> Runtime.getRuntime().addShutdownHook does not seem to be working.
>>>>>> Yarn kills the application immediately and dooes not call shutdown hook
>>>>>> call back .
>>>>>>
>>>>>>
>>>>>> On Sun, Aug 9, 2015 at 12:45 PM, Shushant Arora <
>>>>>> shushantaror...@gmail.com> wrote:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> How to ensure in spark streaming 1.3 with kafka that when an
>>>>>>> application is killed , last running batch is fully processed and 
>>>>>>> offsets
>>>>>>> are written to checkpointing dir.
>>>>>>>
>>>>>>> On Fri, Aug 7, 2015 at 8:56 AM, Shushant Arora <
>>>>>>> shushantaror...@gmail.com> wrote:
>>>>>>>
>>>>>>>> Hi
>>>>>>>>
>>>>>>>> I am using spark stream 1.3 and using custom checkpoint to save
>>>>>>>> kafka offsets.
>>>>>>>>
>>>>>>>> 1.Is doing
>>>>>>>> Runtime.getRuntime().addShutdownHook(new Thread() {
>>>>>>>>   @Override
>>>>>>>>   public void run() {
>>>>>>>>   jssc.stop(true, true);
>>>>>>>>    System.out.println("Inside Add Shutdown Hook");
>>>>>>>>   }
>>>>>>>>  });
>>>>>>>>
>>>>>>>> to handle stop is safe ?
>>>>>>>>
>>>>>>>> 2.And I need to handle saving checkoinnt in shutdown hook also or
>>>>>>>> driver will handle it automatically since it grcaefully stops stream 
>>>>>>>> and
>>>>>>>> handle
>>>>>>>> completion of foreachRDD function on stream ?
>>>>>>>> directKafkaStream.foreachRDD(new Function<JavaRDD<byte[][]>,
>>>>>>>> Void>() {
>>>>>>>> }
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to