wildfly-operator
wildfly-operator copied to clipboard
Modify the transaction recovery processing to be handled by a separate reconcile loop
In the current implementation there is only one reconcile loop for all functionality of the WildFly Operator. This fact leads to a harder maintainability and a harder scalability of the processing.
The transaction recovery is a separate processing which should be handled without dependency to the main WildFly reconcile cycle. The WildFly recocile responsibility is to create Kubernetes' objects like ConfigMaps, Services, etc. But running (a long-running) recovery operation should be strip of the this loop and handled at the side.
The idea is to create a separate 'transaction recovery' CRD which would be maintained by the new operator reconcile handler. The instance of the customer resource would be created by the main reconcile loop when the WildFly finds out it's necessary to scale down and proceed with recovery. Then the recovery reconcile may do operations which are needed and finish unfinished transactions. When the log is clean then it would pass this information back to the main loop (maybe with an event or just changing a status a of the created transaction recovery CR). Now the main loop of WildFly reconciliation may scaled down the StatefulSet.
This feature should fix https://github.com/wildfly/wildfly-operator/issues/110