prosgarz35 commented on PR #3198:
URL: https://github.com/apache/james-project/pull/3198#issuecomment-5807294794
### Incremental Refinements: Mailbox Instance Binding & Installation
Synchronization
Addressed the latest review feedback regarding mailbox instance tracking
and handler installation ordering:
1. **Deterministic `SelectedMailbox` Binding during Teardown**:
- **Problem**: Previously, error handlers in `onErrorResume` and
`IdleMailboxListener#reactiveEvent` fetched the selected mailbox dynamically
via `session.getSelected()`. If a concurrent command deselected or re-selected a
different mailbox before the error callback fired, `unregisterIdle()`
could target the wrong mailbox instance.
- **Fix**: Captured the initial `SelectedMailbox sm =
session.getSelected()` at the start of `processRequestReactive` and passed this
exact instance down to `idle(...)`, `IdleMailboxListener`, and all
`cleanupIdle(...)` teardown
paths.
- **Benefit**: Guarantees that unregistration strictly targets the
exact mailbox instance to which the listener was registered.
2. **Atomic Installation Guard for `pushLineHandler`**:
- **Fix**: Wrapped `session.pushLineHandler(...)` in a `try-catch`
block guaranteeing `lineHandlerInstalled.set(true)` on successful registration
and resetting to `false` if an exception is thrown, coupled with proactive flag
initialization inside the callback entrance.
- **Benefit**: Eliminates any possibility of a stale or mismatched
`lineHandlerInstalled` flag during pipeline setup failures or immediate inbound
packet execution.
#### Verification
- Module `:protocols-imap` compiled cleanly with Maven 3.9+ and OpenJDK.
- Checkstyle: **0 violations**.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]