Hi Mike,

Let me take a look.

Thanks for the report.

Regards
JB

> Le 14 mars 2020 à 09:03, Mike Hummel <[email protected]> a écrit :
> 
> Hello,
> 
> I did a little bit research for IGNORE_INTERRUPTS in the karaf sources. I 
> found in master and karaf-4.2.x the same results.
> 
> The const is defined in 'Sessio'n and 'SessionProperties', but only used from 
> 'Session'.
> 
> It is only used to enable the behaviour but never used to implement some kind 
> of behaviour.
> 
> Is there someone how can can prove this? And what is the background for two 
> definitions of the same const? If I have the background I could look for a 
> fix.
> 
> Just now I created KARAF-6645 to track the problem.
> 
> Best Regards,
> 
> Mike
> 
> 
> 
> 
>> On 5. Mar 2020, at 09:53, Mike Hummel <[email protected] <mailto:[email protected]>> 
>> wrote:
>> 
>> It's not easy to say ... In 4.2.3 it's broken and in 4.1.x it was ok.
>> 
>> I testet the flag IGNORE_INTERRUPTS in 4.2.7 and it was not working as I 
>> imagine. I'm even not sure if the flag is exact what I want to do.
>> 
>> 
>>> On 4. Mar 2020, at 09:18, Guillaume Nodet <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> 
>>> Could you be more specific about "older releases" ? Do you know in which 
>>> release it broke ?
>>> 
>>> Le mer. 4 mars 2020 à 09:14, Mike Hummel <[email protected] 
>>> <mailto:[email protected]>> a écrit :
>>> Hello,
>>> 
>>> I try to break my karaf commands with Ctrl-C (e.g. by using 
>>> Thread.sleep()). In older releases this was no problem, but since the shell 
>>> starts every command in a separate thread the Cltr-C is also caught by gogo 
>>> and it will unlock the command from the console.
>>> 
>>> I also tried this
>>> 
>>>             session.put(Session.IGNORE_INTERRUPTS, Boolean.TRUE);
>>> 
>>> but it gets not the effect.
>>> 
>>> Is there a way to recognise if the current command is separated from the 
>>> current gogo command line?
>>> 
>>> A sample snipped:
>>> 
>>>         Object oldIgnoreInterrupts = session.get(Session.IGNORE_INTERRUPTS);
>>>         try {
>>>             session.put(Session.IGNORE_INTERRUPTS, Boolean.TRUE);
>>>             return doExecute(this, cmd, parameters);
>>>         } finally {
>>>             session.put(Session.IGNORE_INTERRUPTS, oldIgnoreInterrupts);
>>>         }
>>> 
>>>     public Object doExecute(CmdShitYo base, String cmd, String[] 
>>> parameters) throws Exception {
>>>         if (cmd.equals("ctrl-c")) {
>>>             try {
>>>                 while (true) {
>>>                     System.out.println("Wait for Ctrl-C - off");
>>>                     MThread.sleep(3000);
>>>                 }
>>>             } catch (InterruptedException e) {
>>>                 System.out.println("Interrupted !!!!");
>>>             }
>>>         }
>>>    }
>>> 
>>> MThread:
>>>     public static void sleep(long _millisec) {
>>>         try {
>>>             Thread.sleep(_millisec);
>>>         } catch (InterruptedException e) {
>>>             log.i(e);
>>>         }
>>>     }
>>> 
>>> This will output
>>> 
>>> Wait for Ctrl-C - off
>>> Wait for Ctrl-C - on
>>> Wait for Ctrl-C - off
>>> Wait for Ctrl-C - on
>>> ...
>>> 
>>> If I interrupt, it will be separated from gogo shell and iterate for ever. 
>>> - And I see the interrupted exception in the log.
>>> 
>>> Thx,
>>> 
>>> Mike
>>> 
>>> 
>>> -- 
>>> ------------------------
>>> Guillaume Nodet
>>> 
>> 
> 

Reply via email to