Well, system.exit will not ensure all data was processed before shutdown.
There should not be a deadlock is onBatchCompleted just starts the thread
(that runs stop()) and completes.

On Wed, Aug 12, 2015 at 1:50 AM, Shushant Arora <shushantaror...@gmail.com>
wrote:

> 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