voonhous commented on code in PR #19642:
URL: https://github.com/apache/hudi/pull/19642#discussion_r3794804465


##########
release/release_guide.md:
##########
@@ -290,6 +290,31 @@ Here is how to go about a bug fix release.
 - Go to apache/hudi repo locally and pull this branch. Here after you can work 
on this branch and push to origin when need be.
 - Do not forget to set the env variables from above section.
 
+## hudi-trino Trino pin-back
+
+On master hudi-trino tracks `trinodb/trino` master at the commit in 
`trino.sha`, whose `trino.version` is a
+`-SNAPSHOT` that resolves from nowhere but a local build. A release must 
depend on a released Trino, and the pin-back
+must land on the release branch before the source release is generated (see 
"Build a release candidate", the Generate
+Source Release step) -- otherwise the voted tarball ships a `-SNAPSHOT` Trino 
pin that cannot be built from Central.
+
+1. Wait for the latest released Trino `NNN` to be available on Maven Central.
+2. In a `trinodb/trino` checkout, find the tagged commit: `TAG_SHA=$(git 
rev-list -n1 NNN)`.
+3. If the pin is behind the tag, advance master's pin to `TAG_SHA` first by 
dispatching the
+   `Hudi Trino SPI Compatibility` workflow with `trino_ref=NNN` (it then 
verifies and pins exactly that tag rather
+   than master HEAD) and merging the pin PR a committer opens from the pushed 
`bot/trino-pin` branch. If the pin is ahead of the tag, enumerate the 
adaptations that would be lost with
+   `git log NNN..<pin> -- core/trino-spi lib/trino-filesystem 
lib/trino-filesystem-manager lib/trino-hdfs`
+   and revert them forward on the release branch only, never on master.
+4. On the release branch set `trino.version=NNN`, `trino.sha=TAG_SHA` and 
`trino.e2e.version=NNN` in the root
+   pom, the `<parent>` version in `docker/trino/shim/pom.xml`, and the 
`docker/trino` defaults
+   (`TRINO_VERSION` in `build_image.sh`, `ARG TRINO_VERSION` in `Dockerfile`). 
Re-check SPI-surface-coupled

Review Comment:
   Dropped in b92f718be3f5 -- the step now names only the root pom properties, 
the shim parent, and the Dockerfile `ARG` default (with a note that 
`build_image.sh` reads `trino.e2e.version` from the pom).
   



##########
hudi-trino/src/main/java/io/trino/plugin/hudi/HudiSplitSource.java:
##########
@@ -188,7 +168,13 @@ public void close()
     @Override
     public boolean isFinished()
     {
-        return splitLoaderFuture.isDone() && queue.isFinished();
+        return finished.get() || (splitLoaderFuture.isDone() && 
queue.isFinished());

Review Comment:
   Confirmed against the loader: `whenAllComplete` ran `asyncQueue.finish()` 
without consulting the futures, unordered against `addExceptionCallback`. Fixed 
in b92f718be3f5: the combiner now drains each future with `Futures.getDone` and 
routes failures through the error listener before finishing the queue (the 
listener is idempotent, so double reporting with the fail-fast callback is 
harmless). Covered in the new `TestHudiSplitSource` at the source level -- a 
loader failure blocks `isFinished` and surfaces on the next batch; the Guava 
callback race itself is not deterministically reproducible, but with the 
combiner reporting first, correctness no longer depends on that ordering.
   



-- 
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]

Reply via email to