[ 
https://issues.apache.org/jira/browse/FELIX-3607?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13541481#comment-13541481
 ] 

Felix Meschberger commented on FELIX-3607:
------------------------------------------

The patch looks good to me.

Could someone else knowledgeable with the ThreadIO stuff have a look, too ? 
Thanks.

(Removed the config admin component, because this looks like unrelated)
                
> ThreadIO doesn't utilize changed system streams after bundle activation
> -----------------------------------------------------------------------
>
>                 Key: FELIX-3607
>                 URL: https://issues.apache.org/jira/browse/FELIX-3607
>             Project: Felix
>          Issue Type: Bug
>          Components: Gogo Runtime
>    Affects Versions: gogo.runtime-0.12.0
>            Reporter: Tuomas Kiviaho
>            Priority: Minor
>         Attachments: gogo-runtime.patch
>
>
> I use maven failsafe to run integration test fragments inside external osgi 
> framework and remote gogo is used to bridge forked failsafe execution with a 
> bundled failsafe junit provider. Everything has worked fine until I noticed 
> that once executing thread changes. Then I seem to start receiving 
> surefire/failsafe directives along with whatever is printed to system streams.
> When thread execution stays the same there is no problem
> 'Hello World' ->  server[failsafe] -> 
> '3,0001,Hello World' -> server[telnetconsole] -> 
> '3,0001,Hello World' -> client[telnetconsole] -> 
> '3,0001,Hello World' -> client[failsafe] -> 
> 'Hello World'
> but thread changes due to using log service for instance then the message 
> isn't coming back (which is perfectly normal) but instead is poured over to 
> System.out
> 'Hello World' -> server[logservice] ->
> 'Hello World' -> server[loglistener] -> // here we have a different thread
> 'Hello World' -> server[failsafe] -> 
> '3,0001,Hello World' -> server[telnetconsole] -> 
> '3,0001,Hello World' -> System.out  // and here thread local can't be found 
> so System.out is used as fallback mechanism
> or that's what I think was meant to be. Actually the printing is done to some 
> ancient System.out that was set during the bundle got active. Failsafe infact 
> pushes and pops the System.out in between without Gogo noticing it.
> This kind of possiblility could be taken into account by wrapping the system 
> in, out and error to a dedicated FilteredStreams that use the previously 
> obtained streams in case system streams do not point to ThreadIOImpl's 
> err,out and in anymore. The close() method already contains similar logic.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to