This is an automated email from the ASF dual-hosted git repository.

xuang7 pushed a commit to branch release/v1.2
in repository https://gitbox.apache.org/repos/asf/texera.git


The following commit(s) were added to refs/heads/release/v1.2 by this push:
     new 6e85781e75 fix(local-dev, v1.2): refresh Lakekeeper warehouse S3 
endpoint when it already exists  (#6999)
6e85781e75 is described below

commit 6e85781e7563a9c26e259717e8f6f21708f3a004
Author: Yicong Huang <[email protected]>
AuthorDate: Wed Jul 29 14:05:40 2026 -0400

    fix(local-dev, v1.2): refresh Lakekeeper warehouse S3 endpoint when it 
already exists  (#6999)
    
    ### What changes were proposed in this PR?
    
    Backport of #6197 to `release/v1.2`, cherry-picked from
    aaed0857c8a73a4b13fd174417cd9a823f1bab25. The cherry-pick applied
    cleanly.
    
    Follows the Direct Backport Push convention; opened as a PR (rather than
    a direct push) per a backport-coverage audit.
    
    ### Any related issues, documentation, discussions?
    
    Backport of #6197. Originally linked #6195.
    
    ### How was this PR tested?
    
    Release-branch CI runs on this PR. Cherry-pick applied cleanly onto
    `release/v1.2`; no manual conflict resolution was needed.
    
    ### Was this PR authored or co-authored using generative AI tooling?
    
    Yes — backport prepared with Claude Code (mechanical cherry-pick; the
    change itself is #6197 by its original author).
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-authored-by: Jiadong Bai <[email protected]>
---
 bin/single-node/docker-compose.yml | 45 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 44 insertions(+), 1 deletion(-)

diff --git a/bin/single-node/docker-compose.yml 
b/bin/single-node/docker-compose.yml
index a7efb81382..64247d9d66 100644
--- a/bin/single-node/docker-compose.yml
+++ b/bin/single-node/docker-compose.yml
@@ -219,7 +219,50 @@ services:
         fi
 
         if jq -e --arg name "$$STORAGE_ICEBERG_CATALOG_REST_WAREHOUSE_NAME" 
'.warehouses[]? | select(.name == $$name)' /tmp/warehouses.txt >/dev/null; then
-          echo "Lakekeeper Warehouse 
'$$STORAGE_ICEBERG_CATALOG_REST_WAREHOUSE_NAME' already exists. Skipping 
creation."
+          # The warehouse persists its S3 endpoint in Lakekeeper's own DB. The
+          # local-dev launcher sets STORAGE_S3_ENDPOINT to the host LAN IP so
+          # both this container and the host JVMs (Iceberg remote-signing) 
reach
+          # the same MinIO — but that IP changes across networks / DHCP leases.
+          # This init is idempotent and would otherwise just skip, leaving a
+          # stale endpoint that breaks workflow execution with an opaque 
Iceberg
+          # RESTException. Refresh the stored endpoint on every run (#6195).
+          echo "Lakekeeper Warehouse 
'$$STORAGE_ICEBERG_CATALOG_REST_WAREHOUSE_NAME' already exists. Refreshing its 
storage endpoint to '$$STORAGE_S3_ENDPOINT'..."
+          WAREHOUSE_ID=$$(jq -r --arg name 
"$$STORAGE_ICEBERG_CATALOG_REST_WAREHOUSE_NAME" '.warehouses[]? | select(.name 
== $$name) | .id' /tmp/warehouses.txt)
+          UPDATE_PAYLOAD=$$(cat <<EOF
+        {
+          "storage-profile": {
+            "type": "s3",
+            "bucket": "$$STORAGE_ICEBERG_CATALOG_REST_S3_BUCKET",
+            "region": "$$STORAGE_S3_REGION",
+            "endpoint": "$$STORAGE_S3_ENDPOINT",
+            "flavor": "s3-compat",
+            "path-style-access": true,
+            "sts-enabled": false
+          },
+          "storage-credential": {
+            "type": "s3",
+            "credential-type": "access-key",
+            "aws-access-key-id": "$$STORAGE_S3_AUTH_USERNAME",
+            "aws-secret-access-key": "$$STORAGE_S3_AUTH_PASSWORD"
+          }
+        }
+        EOF
+          )
+
+          UPDATE_CODE=$$(curl -s -o /tmp/response.txt -w "%{http_code}" \
+              -X POST \
+              -H "Content-Type: application/json" \
+              -d "$$UPDATE_PAYLOAD" \
+              
"$$LAKEKEEPER_BASE_URI/management/v1/warehouse/$$WAREHOUSE_ID/storage" || echo 
"000")
+
+          if [ "$$UPDATE_CODE" -lt 200 ] || [ "$$UPDATE_CODE" -ge 300 ]; then
+            echo "Failed to refresh Lakekeeper Warehouse storage. HTTP Code: 
$$UPDATE_CODE"
+            echo "ERROR RESPONSE:"
+            if [ -f /tmp/response.txt ]; then cat /tmp/response.txt; fi
+            echo ""
+            exit 1
+          fi
+          echo "Refreshed Lakekeeper Warehouse storage endpoint successfully 
(HTTP $$UPDATE_CODE)."
         else
           echo "Warehouse not found. Creating 
'$$STORAGE_ICEBERG_CATALOG_REST_WAREHOUSE_NAME'..."
           CREATE_PAYLOAD=$$(cat <<EOF

Reply via email to