[ 
https://issues.apache.org/jira/browse/IGNITE-28400?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Viacheslav Blinov updated IGNITE-28400:
---------------------------------------
    Description: 
TableLifecycleHandler: A single new class that owns the full catalog/LWM event 
lifecycle — registration, handling, and cleanup.

 What moves out of TableManager

 Fields:
 - destructionEventsQueue (LongPriorityQueue)
 - All 4 event listener fields (onTableCreateListener, onTableDropListener, 
onTableAlterListener, onLowWatermarkChangedListener)
 - DestroyTableEvent inner class

 Methods:
 - onTableDrop() — queues destruction event
 - onLwmChanged() — drains queue, triggers destruction
 - destroyTableLocally() — drops local table structures
 - onTableAlter() / onTableRename() / onTablePropertiesChanged() — table alter 
handling
 - cleanUpResourcesForDroppedTablesOnRecoveryBusy() — recovery cleanup
 - destroyMvStoragesForTablesNotIn() — orphan storage cleanup
 - unregisterMetricsSource() — metric source cleanup
 - Event registration from startAsync()
 - Event unregistration from beforeNodeStop()

 What stays in TableManager

 - IgniteTablesInternal implementation (table access API) — interface-mandated
 - Component lifecycle (startAsync, beforeNodeStop, stopAsync) — but simplified
 - loadTableToZoneOnTableCreate() — table creation orchestration (versioned 
values + zone coordination)
 - prepareTableResourcesOnRecovery() — table recovery preparation
 - recoverTables() — recovery orchestration
 - createTableImpl() — factory delegation
 - Versioned values (tablesVv, localPartitionsVv, assignmentsUpdatedVv)
 - Table access utilities (sync, orStopManagerFuture, etc.)

  was:TableImplFactory: Its a pure construction factory with no shared mutable 
state. It removes 10 fields from TableManager that are required only for 
creating TableImpl.


> Extract TableLifecycleHandler out of TableManager
> -------------------------------------------------
>
>                 Key: IGNITE-28400
>                 URL: https://issues.apache.org/jira/browse/IGNITE-28400
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Viacheslav Blinov
>            Assignee: Viacheslav Blinov
>            Priority: Major
>              Labels: ignite-3
>
> TableLifecycleHandler: A single new class that owns the full catalog/LWM 
> event lifecycle — registration, handling, and cleanup.
>  What moves out of TableManager
>  Fields:
>  - destructionEventsQueue (LongPriorityQueue)
>  - All 4 event listener fields (onTableCreateListener, onTableDropListener, 
> onTableAlterListener, onLowWatermarkChangedListener)
>  - DestroyTableEvent inner class
>  Methods:
>  - onTableDrop() — queues destruction event
>  - onLwmChanged() — drains queue, triggers destruction
>  - destroyTableLocally() — drops local table structures
>  - onTableAlter() / onTableRename() / onTablePropertiesChanged() — table 
> alter handling
>  - cleanUpResourcesForDroppedTablesOnRecoveryBusy() — recovery cleanup
>  - destroyMvStoragesForTablesNotIn() — orphan storage cleanup
>  - unregisterMetricsSource() — metric source cleanup
>  - Event registration from startAsync()
>  - Event unregistration from beforeNodeStop()
>  What stays in TableManager
>  - IgniteTablesInternal implementation (table access API) — interface-mandated
>  - Component lifecycle (startAsync, beforeNodeStop, stopAsync) — but 
> simplified
>  - loadTableToZoneOnTableCreate() — table creation orchestration (versioned 
> values + zone coordination)
>  - prepareTableResourcesOnRecovery() — table recovery preparation
>  - recoverTables() — recovery orchestration
>  - createTableImpl() — factory delegation
>  - Versioned values (tablesVv, localPartitionsVv, assignmentsUpdatedVv)
>  - Table access utilities (sync, orStopManagerFuture, etc.)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to