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

yuqi4733 pushed a commit to branch branch-1.1
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/branch-1.1 by this push:
     new ce12c8c1dc [#9512] fix(lance-rest): Handle null mode in 
registerTableRequest and add test case for verification (#9550)
ce12c8c1dc is described below

commit ce12c8c1dc045fe31628f4d54fa5751f23d81c89
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Dec 24 18:09:37 2025 +0800

    [#9512] fix(lance-rest): Handle null mode in registerTableRequest and add 
test case for verification (#9550)
    
    ### What changes were proposed in this pull request?
    
    Try to fix a possible bug if the mode in `RegisterTableRequest` is null.
    
    ### Why are the changes needed?
    
    It's a bug.
    
    Fix: #9512
    
    ### Does this PR introduce _any_ user-facing change?
    
    N/A.
    
    ### How was this patch tested?
    
    Add ITs
    
    Co-authored-by: Mini Yu <[email protected]>
---
 .github/workflows/backend-integration-test.yml                   | 1 +
 .../org/apache/gravitino/lance/service/LanceExceptionMapper.java | 5 +++++
 .../gravitino/lance/service/rest/LanceTableOperations.java       | 3 ++-
 .../gravitino/lance/integration/test/LanceRESTServiceIT.java     | 9 +++++++++
 4 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/backend-integration-test.yml 
b/.github/workflows/backend-integration-test.yml
index 1334bf1892..b1b99ca818 100644
--- a/.github/workflows/backend-integration-test.yml
+++ b/.github/workflows/backend-integration-test.yml
@@ -32,6 +32,7 @@ jobs:
               - common/**
               - conf/**
               - core/**
+              - lance/**
               - dev/**
               - gradle/**
               - iceberg/**
diff --git 
a/lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/LanceExceptionMapper.java
 
b/lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/LanceExceptionMapper.java
index 59bf7e6642..6ae9419e1c 100644
--- 
a/lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/LanceExceptionMapper.java
+++ 
b/lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/LanceExceptionMapper.java
@@ -42,6 +42,11 @@ public class LanceExceptionMapper implements 
ExceptionMapper<Exception> {
             ? (LanceNamespaceException) ex
             : toLanceNamespaceException(instance, ex);
 
+    LOG.error(
+        "Operate Lance instance with id '{}' got exception: {}",
+        instance,
+        lanceException.getMessage());
+
     return handleLanceNamespaceException(lanceException);
   }
 
diff --git 
a/lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/rest/LanceTableOperations.java
 
b/lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/rest/LanceTableOperations.java
index e01eca59d9..26f6e6cc90 100644
--- 
a/lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/rest/LanceTableOperations.java
+++ 
b/lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/rest/LanceTableOperations.java
@@ -167,7 +167,8 @@ public class LanceTableOperations {
               : Maps.newHashMap(registerTableRequest.getProperties());
       props.put(LANCE_LOCATION, registerTableRequest.getLocation());
       props.put(LanceConstants.LANCE_TABLE_REGISTER, "true");
-      ModeEnum mode = registerTableRequest.getMode();
+      ModeEnum mode =
+          registerTableRequest.getMode() == null ? ModeEnum.CREATE : 
registerTableRequest.getMode();
 
       RegisterTableResponse response =
           lanceNamespace.asTableOps().registerTable(tableId, mode, delimiter, 
props);
diff --git 
a/lance/lance-rest-server/src/test/java/org/apache/gravitino/lance/integration/test/LanceRESTServiceIT.java
 
b/lance/lance-rest-server/src/test/java/org/apache/gravitino/lance/integration/test/LanceRESTServiceIT.java
index 5570f38839..716ed83393 100644
--- 
a/lance/lance-rest-server/src/test/java/org/apache/gravitino/lance/integration/test/LanceRESTServiceIT.java
+++ 
b/lance/lance-rest-server/src/test/java/org/apache/gravitino/lance/integration/test/LanceRESTServiceIT.java
@@ -672,6 +672,15 @@ public class LanceRESTServiceIT extends BaseIT {
     Assertions.assertNotNull(response);
     Assertions.assertEquals(nonExistingLocation, response.getLocation());
     Assertions.assertFalse(new File(nonExistingLocation).exists());
+
+    // Test registerTable with null mode after deregister should succeed
+    registerTableRequest.setMode(null);
+    String verifyNullModeLocation = tempDir + "/" + 
"verify_null_mode_location/";
+    registerTableRequest.setLocation(verifyNullModeLocation);
+    registerTableRequest.setId(List.of(CATALOG_NAME, SCHEMA_NAME, 
"verify_null_mode_location"));
+    response = Assertions.assertDoesNotThrow(() -> 
ns.registerTable(registerTableRequest));
+    Assertions.assertNotNull(response);
+    Assertions.assertEquals(verifyNullModeLocation, response.getLocation());
   }
 
   @Test

Reply via email to