Aled Sage created BROOKLYN-322:
----------------------------------

             Summary: On rebind, entity temporarily (incorrectly) reports 
serviceUp=false
                 Key: BROOKLYN-322
                 URL: https://issues.apache.org/jira/browse/BROOKLYN-322
             Project: Brooklyn
          Issue Type: Bug
            Reporter: Aled Sage


With Brooklyn 0.10.0-SNAPSHOT (but also with older versions, I presume)...

When rebinding to many entities, some software processes temporarily show 
serviceUp=false before going back to showing the correct serviceUp=true.

The problem is with the polling of their feeds. It starts polling immediately, 
rather than waiting for the entity to be managed. This can cause some feeds to 
throw an exception (e.g. when {{SoftwareProcessImpl.connectServiceUpIsRunning}} 
calls {{driver.isRunning()}}, and that tries to execute an ssh command). The 
exception causes the feed to set it to whatever value the {{onException}} tells 
it to use.

It is more likely to happen when there are many entities, because the entities 
will be unmanaged for longer.

The solution is to not poll when the entity is not managed.

This is a simple fix in ((Poller}}.

It might cause problems for those trying to use a Poller to poll just once: it 
might skip that single poll because the entity is unmanaged. I think we can 
ignore that. I don't know of any use-cases doing that. Also, I suspect that it 
might be a good thing! On rebind we don't necessarily want to do that single 
poll again, and when the feed is first registered we'd hope that it is done 
when the entity is managed (if done in {{SoftwareProcess.connectSensors()}}, 
but not if done in the entity's init method).

We could revisit this in the future, so that if the entity is unmanaged (but e 
think it will soon be managed), then we reschedule it for when the entity is 
actually managed.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to