Denovo1998 opened a new pull request, #26108: URL: https://github.com/apache/pulsar/pull/26108
### Motivation Geo replication pauses and rewinds the cursor when a replicated message needs schema information that is not immediately available. However, if the local schema lookup throws synchronously before returning a future, the current entry is not cleaned up through the schema-fetch path. This can leave the in-flight task permit incomplete and skip releasing the entry resources for the failed message. ### Modifications - Catch synchronous failures from `getSchemaInfo(msg)` in `GeoPersistentReplicator`. - Release the current entry, retained payload buffer, and recycled message on that failure path. - Mark the current in-flight entry as completed before rewinding the cursor. - Add a regression test covering synchronous schema lookup failure cleanup. ### Verifying this change - [x] Make sure that the change passes the CI checks. - `GRADLE_USER_HOME=/private/tmp/gradle ./gradlew :pulsar-broker:test --tests org.apache.pulsar.broker.service.persistent.GeoPersistentReplicatorTest -PtestRetryCount=0` ### Does this pull request potentially affect one of the following parts: <!-- DO NOT REMOVE THIS SECTION. CHECK THE PROPER BOX ONLY. --> *If the box was checked, please highlight the changes* - [ ] Dependencies (add or upgrade a dependency) - [ ] The public API - [ ] The schema - [ ] The default values of configurations - [ ] The threading model - [ ] The binary protocol - [ ] The REST endpoints - [ ] The admin CLI options - [ ] The metrics - [ ] Anything that affects deployment -- 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]
