-
Notifications
You must be signed in to change notification settings - Fork 582
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[dev.icinga.com #9927] Figure out how to sync dynamically created objects inside the cluster #3278
Comments
Updated by mfriedrich on 2015-08-17 13:02:03 +00:00
|
Updated by mfriedrich on 2015-08-18 14:58:36 +00:00
|
Updated by mfriedrich on 2015-08-20 14:38:52 +00:00
|
Updated by mfriedrich on 2015-08-20 14:41:32 +00:00
|
Updated by mfriedrich on 2015-09-04 11:57:12 +00:00
|
Updated by mfriedrich on 2015-09-05 15:33:40 +00:00
|
Updated by mfriedrich on 2015-09-10 16:15:59 +00:00
TODOs
|
Updated by mfriedrich on 2015-09-11 08:19:53 +00:00
|
Updated by mfriedrich on 2015-09-11 09:05:48 +00:00 Created objects trigger both: OnActiveChanged and then OnVersionChanged which results in two updates. |
Updated by mfriedrich on 2015-09-11 13:31:42 +00:00 Ok nvm. Each modified attribute will trigger OnVersionChanged and therefore sending a request on its own.
The other cluster node will update its own local object and set the object version, which will send back a new message but being discarded thanks to the object version comparison inside the api handler. Since this message is relayed and just an asynchronous answer, I don't see a legit way to suppress these messages (everything else is handled by the cluster protocol already). |
Updated by mfriedrich on 2015-09-12 09:05:21 +00:00
|
Updated by mfriedrich on 2015-09-12 09:08:31 +00:00
|
Updated by mfriedrich on 2015-09-15 10:05:11 +00:00
|
Updated by mfriedrich on 2015-09-15 14:26:30 +00:00 Initial sync works the same way as the cluster config sync, except that it just calls UpdateConfigObject for all api created objects, and sends them over directly to the connected endpoint as client. Instead of iterating over all objects and only selecting the "_api" package this could be enhanced performance-wise by just glob'ing the types and object names from disk? (in memory is certainly better, requires tests). One thing I've found still not working properly - when the application is shut down, OnActiveChanged is triggered, object->IsActive() is false and the DeleteObject handler is called. Then the object silently gets removed on shutdown, even relaying it to the other node. |
Updated by mfriedrich on 2015-09-15 16:03:23 +00:00 It's origin is in the async ping-pong for cluster events on create/update/delete. Sending the delete request over to the first node must not happen at all, and then the event comes back deleting it locally, even worse.
Before the object gets destroyed for good, I've added a special extension similar to DbObject, which allows the cluster config sync to properly delete the object (once called by the api), but not do that on application shutdown. |
Updated by mfriedrich on 2015-09-15 16:04:54 +00:00 TODO
|
Updated by mfriedrich on 2015-09-17 12:03:10 +00:00
Comments/Downtimes will be handled in #9777. Furthermore I've been looking into the zone attribute influencing the cluster config sync (part of #9100) which has now been added as well, including additional security measures only allowing the config object sync happen top-down at the moment. |
Updated by mfriedrich on 2015-09-17 12:03:21 +00:00
|
Updated by mfriedrich on 2015-09-17 13:59:33 +00:00
|
Updated by mfriedrich on 2015-09-21 07:40:19 +00:00
|
Updated by mfriedrich on 2015-09-22 10:03:09 +00:00
|
Updated by mfriedrich on 2015-09-30 08:16:34 +00:00
|
Updated by mfriedrich on 2015-09-30 08:17:43 +00:00
|
Updated by mfriedrich on 2015-11-11 14:48:56 +00:00
|
This issue has been migrated from Redmine: https://dev.icinga.com/issues/9927
Created by mfriedrich on 2015-08-17 08:55:48 +00:00
Assignee: mfriedrich
Status: Resolved (closed on 2015-09-17 13:59:33 +00:00)
Target Version: 2.4.0
Last Update: 2015-11-11 14:48:55 +00:00 (in Redmine)
Changesets
2015-09-10 13:49:56 +00:00 by (unknown) 8306373
2015-09-10 14:54:05 +00:00 by mfriedrich 86b8c00
2015-09-10 15:03:06 +00:00 by mfriedrich f0eafa7
2015-09-10 15:48:06 +00:00 by mfriedrich 2983e0d
2015-09-11 12:09:46 +00:00 by mfriedrich cc6673e
2015-09-15 09:59:09 +00:00 by mfriedrich cb7bbd6
2015-09-15 14:09:56 +00:00 by mfriedrich df5dde4
2015-09-15 15:56:34 +00:00 by mfriedrich 47f0aad
2015-09-17 11:54:09 +00:00 by mfriedrich 20aa36d
2015-09-17 12:20:43 +00:00 by (unknown) 6fa58a5
2015-09-17 12:20:43 +00:00 by mfriedrich f9c058e
2015-09-17 12:20:44 +00:00 by mfriedrich 81a0bc6
2015-09-17 12:20:44 +00:00 by mfriedrich b271594
2015-09-17 12:20:44 +00:00 by mfriedrich a6d8cea
2015-09-17 12:20:44 +00:00 by mfriedrich 4955c28
2015-09-17 12:20:44 +00:00 by mfriedrich 0fd9d34
2015-09-17 12:20:44 +00:00 by mfriedrich 18d645e
2015-09-17 13:52:54 +00:00 by mfriedrich 7dc3d28
2015-09-18 08:07:13 +00:00 by mfriedrich f2c3bff
2015-09-18 10:49:38 +00:00 by mfriedrich 57179f3
2015-09-29 12:24:39 +00:00 by mfriedrich bb3b724
2015-09-30 08:04:37 +00:00 by mfriedrich 19e7524
2015-10-26 05:53:36 +00:00 by (unknown) 43bbbfc
2015-11-08 20:22:06 +00:00 by (unknown) 4bb9bed
Parent Task: #9082
Relations:
The text was updated successfully, but these errors were encountered: