Closed icinga-migration closed 11 years ago
Updated by mfriedrich on 2012-12-12 08:20:37 +00:00
afaik mod_gearman fiddles with the inner core objects in memory, as well as copies some algorithms the core has to do in order to achieve such checks. My guess - ofc without looking in the code as i do not have time right now - this is a mod_gearman issue, because as you mentioned, without the broker module, it works perfectly fine. Did you send your report to the mod_gearman bug tracker as well?
Updated by mfriedrich on 2012-12-12 08:24:51 +00:00
Updated by buraks78 on 2012-12-12 22:04:52 +00:00
I was not expecting mod_gearman to modify core objects. However, I have submitted a bug report there as well. Here is the link for reference: https://github.com/sni/mod\_gearman/issues/36
Updated by mfriedrich on 2013-02-21 19:17:58 +00:00
since the core works fine without mod_gearman, marking this invalid in the means of a core issue. if mod_gearman fixes their bugby behaviour somehow, please discuss it over there.
This issue has been migrated from Redmine: https://dev.icinga.com/issues/3489
Created by buraks78 on 2012-12-12 01:49:03 +00:00
Assignee: (none) Status: Rejected (closed on 2013-02-21 19:17:58 +00:00) Target Version: (none) Last Update: 2013-02-21 19:17:58 +00:00 (in Redmine)
My freshness check executes only once. Once executed, the is_being_freshened is never reset, and therefore, the freshness check never executes again. This only happens when I enable the mod_gearman broker.
My setup is below:
Here is configuration for the service:
I have updated the source code and added some debugging code to checks.c. Here is code added to handle_async_service_check_result():
And here is the code added to check_service_result_freshness():
The following output is logged when the freshness check is scheduled:
The following output is logged for the first freshness check result processed by the handle_async_service_check_result() call:
As you can see above, queued_check_result->check_options is null so the is_being_freshened flag is never reset. As a result, after the initial check is performed, the freshness check is stuck in limbo as the check_service_result_freshness() call continuously skips the check. See the debugging output below:
It looks like even though the check_flags are properly passed inside the check_service_result_freshness() call, they get lost/overwritten when the event is scheduled: