That was my executor code and not Tims but I did leave out a lot of code
not say that I didn't make poor choices.

On Wed, Nov 23, 2016 at 10:19 AM, Peter Kriens <peter.kri...@aqute.biz>
wrote:

> DS should never call your activate twice. That said, I’ve seen the Felix
> impl do this if you throw an exception from activate. It might maybe do
> this when your activate does not return? However, then you should some
> information from SCR in your log file.
>
> If you properly end your thread in deactivate then things should work out
> fine.
>
> Your executor code in the previous mail looked very strange, why call an
> executor when you wait for the result? It might help to show a skeleton of
> your code so we can look at it.
>
> You also do not show how you stop your thread. You are sure you are using
> the right method? Interrupts work best usually. See
> http://enroute.osgi.org/appnotes/concurrency.html
>
> If you have configuration you could get a created/deleted/created but this
> should follow the invariants. If you want to prevent this then set the
> configurationPolicy=REQUIRE. I also generally use factories even if only
> one is required. This is how I normally use components. This is one of the
> main reasons for the configurer so that proper configuration is available
> for all my components in my application bundle. The idea is to write
> reusable components that parameterized by a single bundle that acts as the
> root of your application.
>
> Another explanation is if DS is installed 2x. This will obviously cause
> problems.
>
> Kind regards,
>
> Peter Kriens
>
>
>
>
>
>
>
>
>
>
> On 23 Nov 2016, at 16:08, Tim Ward <t...@telensa.com> wrote:
>
> Three of us have now looked at this code and we can't see any issues like
> that with it:
>
>     @Activate
>     void activate( ComponentContext cc, BundleContext bc,
> Map<String,Object> config )
>     {
>         logger.info( "activate" );
>
>         thread = new Thread( this );
>         thread.start();
>     }
>
>
> On 23/11/2016 14:58, David Daniel wrote:
>
> An issue I had with threading was that the activate function was never
> completing because I had a loop waiting for the thread.  I ended up moving
> the thread creation out of activate and using an executor to run the thread
> instead of a while loop which took the whole cpu.  I also check to make
> sure the executer is null and if it is not then I kill the old thread.
>
>         if (_executor != null) {
>             _executor.shutdownNow();
>             while(!_executor.isTerminated()){
>             }
>         }
>         _executor = Executors.newSingleThreadExecutor();
>
>             SseWriter writer = new SseWriter(eventQueue, pout, _uri);
>             int circuitBreaker = 0;
>             _executor.execute(writer);
>
>             while(!writer.isStreaming() && circuitBreaker < 10 ) {
>                 circuitBreaker++;
>                 Thread.sleep(1000);
>             }
>
>             _executor.awaitTermination(5, TimeUnit.MINUTES);
>
> On Wed, Nov 23, 2016 at 9:43 AM, Christian Schneider <
> ch...@die-schneider.net> wrote:
>
>> If you get this: "osgi.enroute.configurer.simple.provider"
>> Then the configurer is still active.
>>
>> Christian
>>
>>
>> On 23.11.2016 15:37, Tim Ward wrote:
>>
>> No difference. It still activates my @Component twice, with no
>> deactivation in between, so I start two threads and one of them crashes.
>>
>> 2016-11-23 14:35:42,487 | INFO  | pool-37-thread-3 |
>> provider                         | 73 - 
>> osgi.enroute.configurer.simple.provider
>> - 2.0.0.201610141744 | Reading configurations for bundle
>> com.telensa.apps.planet.p2c.provider 1.0.0.201611231201 in
>> configuration/configuration.json
>> 2016-11-23 14:35:42,487 | INFO  | pool-37-thread-3 |
>> provider                         | 73 - 
>> osgi.enroute.configurer.simple.provider
>> - 2.0.0.201610141744 | Reading configuration for bundle
>> com.telensa.apps.planet.p2c.provider 1.0.0.201611231201 in
>> configuration/configuration.json null
>> 2016-11-23 14:35:42,498 | INFO  | pool-37-thread-3 |
>> P2cImpl                          | 74 - com.telensa.apps.planet.p2c.provider
>> - 1.0.0.201611231201 | activate
>> 2016-11-23 14:35:42,517 | INFO  | pool-37-thread-3 |
>> P2cImpl                          | 74 - com.telensa.apps.planet.p2c.provider
>> - 1.0.0.201611231201 | activate
>> 2016-11-23 14:35:42,517 | INFO  | pool-37-thread-3 |
>> provider                         | 73 - 
>> osgi.enroute.configurer.simple.provider
>> - 2.0.0.201610141744 | Reading configurations for bundle
>> com.telensa.apps.planet.p2c.provider 1.0.0.201611231201 in
>> configuration/configuration.json
>> 2016-11-23 14:35:42,518 | INFO  | pool-37-thread-3 |
>> provider                         | 73 - 
>> osgi.enroute.configurer.simple.provider
>> - 2.0.0.201610141744 | Reading configuration for bundle
>> com.telensa.apps.planet.p2c.provider 1.0.0.201611231201 in
>> configuration/configuration.json null
>> 2016-11-23 14:35:42,522 | INFO  | Thread-47        |
>> P2cImpl                          | 74 - com.telensa.apps.planet.p2c.provider
>> - 1.0.0.201611231201 | Thread started running
>> 2016-11-23 14:35:42,527 | INFO  | Thread-48        |
>> P2cImpl                          | 74 - com.telensa.apps.planet.p2c.provider
>> - 1.0.0.201611231201 | Thread started running
>>
>>
>> On 23/11/2016 14:15, Dirk Fauth wrote:
>>
>> I don't know how it looks like in karaf, but probably yes
>>
>> Am 23.11.2016 15:09 schrieb "Tim Ward" <t...@telensa.com>:
>>
>>> Do you mean delete karaf\data and start all over again? - no, I haven't
>>> tried that.
>>>
>>> On 23/11/2016 13:38, Dirk Fauth wrote:
>>>
>>> Have you cleared the bundle cache in between?
>>>
>>> Am 23.11.2016 13:42 schrieb "Tim Ward" <t...@telensa.com>:
>>>
>>>> I have a @Component with immediate=true which fires up a thread in its
>>>> @Activate to listen on a socket. The @Deactivate, if it were ever called,
>>>> would kill the thread.
>>>>
>>>> What I appear to be seeing is that the @Activate is called twice with
>>>> no call to @Deactivate (so I get two threads, one of which crashes because
>>>> the port is in use).
>>>>
>>>> There may be a hint that this is connected to the processing of
>>>> configuration.json, even though there is nothing in configuration.json for
>>>> this particular @Component.
>>>>
>>>> Any ideas?
>>>>
>>>> When I shut down the system some time later there *are* two calls to
>>>> the @Deactivate method logged, which suggests that it is being called and
>>>> the logging is working. If I leave out the "immediate=true" there are no
>>>> calls to @Activate.
>>>>
>>>
>>> --
>>> Tim Ward
>>>
>>>
>>> _______________________________________________
>>> OSGi Developer Mail List
>>> osgi-dev@mail.osgi.org
>>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>>
>>
>>
>> _______________________________________________
>> OSGi Developer Mail 
>> listosgi-...@mail.osgi.orghttps://mail.osgi.org/mailman/listinfo/osgi-dev
>>
>> --
>> Tim Ward
>>
>> _______________________________________________
>> OSGi Developer Mail 
>> listosgi-...@mail.osgi.orghttps://mail.osgi.org/mailman/listinfo/osgi-dev
>>
>>
>> --
>> Christian Schneiderhttp://www.liquid-reality.de
>>
>> Open Source Architecthttp://www.talend.com
>>
>> _______________________________________________ OSGi Developer Mail List
>> osgi-dev@mail.osgi.org https://mail.osgi.org/mailman/listinfo/osgi-dev
>
> _______________________________________________
> OSGi Developer Mail 
> listosgi-...@mail.osgi.orghttps://mail.osgi.org/mailman/listinfo/osgi-dev
>
> --
> Tim Ward
>
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev
>
>
>
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev
>
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to