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 >>> >> >
