@@ -154,8 +154,8 @@ async fn main() -> Result<()> {
154154 . unwrap ( ) ;
155155
156156 let group_store_context = store_context. clone ( ) ;
157- let mut scheduler_plugins: Vec < Box < dyn SchedulerPlugin > > = Vec :: new ( ) ;
158- let mut status_update_plugins: Vec < Box < dyn StatusUpdatePlugin > > = vec ! [ ] ;
157+ let mut scheduler_plugins: Vec < SchedulerPlugin > = Vec :: new ( ) ;
158+ let mut status_update_plugins: Vec < StatusUpdatePlugin > = vec ! [ ] ;
159159 let mut node_groups_plugin: Option < Arc < NodeGroupsPlugin > > = None ;
160160 let mut webhook_plugins: Vec < WebhookPlugin > = vec ! [ ] ;
161161
@@ -167,7 +167,7 @@ async fn main() -> Result<()> {
167167 let plugin = WebhookPlugin :: new ( config) ;
168168 let plugin_clone = plugin. clone ( ) ;
169169 webhook_plugins. push ( plugin_clone) ;
170- status_update_plugins. push ( Box :: new ( plugin) ) ;
170+ status_update_plugins. push ( plugin. into ( ) ) ;
171171 info ! ( "Plugin: Webhook plugin initialized" ) ;
172172 }
173173 }
@@ -201,26 +201,27 @@ async fn main() -> Result<()> {
201201 match serde_json:: from_str :: < Vec < NodeGroupConfiguration > > ( & node_group_configs) {
202202 Ok ( configs) if !configs. is_empty ( ) => {
203203 let node_groups_heartbeats = heartbeats. clone ( ) ;
204- let group_plugin = NodeGroupsPlugin :: new (
204+
205+ let group_plugin = Arc :: new ( NodeGroupsPlugin :: new (
205206 configs,
206207 store. clone ( ) ,
207208 group_store_context. clone ( ) ,
208209 Some ( node_groups_heartbeats. clone ( ) ) ,
209210 Some ( webhook_plugins. clone ( ) ) ,
210- ) ;
211+ ) ) ;
212+
213+ // Register the plugin as a task observer
214+ group_store_context
215+ . task_store
216+ . add_observer ( group_plugin. clone ( ) )
217+ . await ;
211218
212219 let status_group_plugin = group_plugin. clone ( ) ;
213220 let group_plugin_for_server = group_plugin. clone ( ) ;
214- let group_plugin_arc = Arc :: new ( group_plugin_for_server) ;
215-
216- // Register the plugin as a task observer
217- if let Err ( e) = group_plugin_arc. clone ( ) . register_observer ( ) . await {
218- error ! ( "Failed to register node groups plugin as observer: {e}" ) ;
219- }
220221
221- node_groups_plugin = Some ( group_plugin_arc ) ;
222- scheduler_plugins. push ( Box :: new ( group_plugin) ) ;
223- status_update_plugins. push ( Box :: new ( status_group_plugin) ) ;
222+ node_groups_plugin = Some ( group_plugin_for_server ) ;
223+ scheduler_plugins. push ( group_plugin. into ( ) ) ;
224+ status_update_plugins. push ( status_group_plugin. into ( ) ) ;
224225 info ! ( "Plugin: Node group plugin initialized" ) ;
225226 }
226227 Ok ( _) => {
@@ -263,16 +264,16 @@ async fn main() -> Result<()> {
263264 }
264265
265266 // Create status_update_plugins for discovery monitor
266- let mut discovery_status_update_plugins: Vec < Box < dyn StatusUpdatePlugin > > = vec ! [ ] ;
267+ let mut discovery_status_update_plugins: Vec < StatusUpdatePlugin > = vec ! [ ] ;
267268
268269 // Add webhook plugins to discovery status update plugins
269270 for plugin in & webhook_plugins {
270- discovery_status_update_plugins. push ( Box :: new ( plugin. clone ( ) ) ) ;
271+ discovery_status_update_plugins. push ( plugin. into ( ) ) ;
271272 }
272273
273274 // Add node groups plugin if available
274275 if let Some ( group_plugin) = node_groups_plugin. clone ( ) {
275- discovery_status_update_plugins. push ( Box :: new ( group_plugin. as_ref ( ) . clone ( ) ) ) ;
276+ discovery_status_update_plugins. push ( group_plugin. into ( ) ) ;
276277 }
277278
278279 let discovery_store_context = store_context. clone ( ) ;
@@ -316,16 +317,16 @@ async fn main() -> Result<()> {
316317 } ) ;
317318
318319 // Create status_update_plugins for status updater
319- let mut status_updater_plugins: Vec < Box < dyn StatusUpdatePlugin > > = vec ! [ ] ;
320+ let mut status_updater_plugins: Vec < StatusUpdatePlugin > = vec ! [ ] ;
320321
321322 // Add webhook plugins to status updater plugins
322323 for plugin in & webhook_plugins {
323- status_updater_plugins. push ( Box :: new ( plugin. clone ( ) ) ) ;
324+ status_updater_plugins. push ( plugin. into ( ) ) ;
324325 }
325326
326327 // Add node groups plugin if available
327328 if let Some ( group_plugin) = node_groups_plugin. clone ( ) {
328- status_updater_plugins. push ( Box :: new ( group_plugin. as_ref ( ) . clone ( ) ) ) ;
329+ status_updater_plugins. push ( group_plugin. into ( ) ) ;
329330 }
330331
331332 let status_update_store_context = store_context. clone ( ) ;
0 commit comments