[
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)