{"record":{"id":"b203e4e5e1b339f4","repo":"apache/seatunnel","slug":"failed-to-get-table","errorCode":null,"errorMessage":"Failed to get table: ","messagePattern":"Failed to get table: ","errorType":"exception","errorClass":"CatalogException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-lance/src/main/java/org/apache/seatunnel/connectors/seatunnel/lance/catalog/LanceCatalog.java","lineNumber":216,"sourceCode":"                    convertTableSchema(arrowSchema, tablePath, arrowSchemaFromDataset);\n            if (catalogTable == null) {\n                throw new TableNotExistException(\n                        catalogName,\n                        tablePath,\n                        new CatalogException(\n                                \"Table schema is null or empty. DescribeTable returned: \"\n                                        + (arrowSchema != null ? arrowSchema : \"null schema\")));\n            }\n            return catalogTable;\n        } catch (Exception e) {\n            String errorMsg = e.getMessage();\n            if (errorMsg != null\n                    && (errorMsg.contains(\"Table does not exist\")\n                            || errorMsg.contains(\"TABLE_NOT_FOUND\")\n                            || errorMsg.contains(\"404\"))) {\n                throw new TableNotExistException(catalogName, tablePath, e);\n            } else {\n                throw new CatalogException(\"Failed to get table: \" + tablePath.getTableName(), e);\n            }\n        }\n    }\n\n    @Override\n    public void createTable(TablePath tablePath, CatalogTable table, boolean ignoreIfExists)\n            throws TableAlreadyExistException, DatabaseNotExistException, CatalogException {\n        CreateTableRequest request = new CreateTableRequest();\n        List<String> ids = Lists.newArrayList(tablePath.getTableName());\n        request.setId(ids);\n        byte[] requestData = new byte[0];\n        try {\n            requestData = SchemaUtils.convertJsonArrowSchemaToBytes(table.getTableSchema());\n        } catch (IOException e) {\n            throw new LanceConnectorException(\n                    LanceConnectorErrorCode.TABLE_JSON_ARROW_SCHEMA_CONVERT_EXCEPTION,\n                    e.getMessage());\n        }","sourceCodeStart":198,"sourceCodeEnd":234,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-lance/src/main/java/org/apache/seatunnel/connectors/seatunnel/lance/catalog/LanceCatalog.java#L198-L234","documentation":"LanceCatalog.getTable catches exceptions while loading the table and inspects the error message: if it indicates the table does not exist ('Table does not exist', 'TABLE_NOT_FOUND', '404') it throws TableNotExistException; otherwise it wraps the original exception in a generic CatalogException 'Failed to get table: <name>'. This generic variant means table access failed for a non-not-found reason.","triggerScenarios":"getTable fails while opening the Lance dataset for reasons other than non-existence — storage access errors, corrupted metadata, deserialization failures, permission problems, or incompatible dataset versions.","commonSituations":"Object storage credentials invalid or missing; network failure reaching S3/OSS; dataset manifest corrupted; Lance format version mismatch between writer and reader; partial write left the dataset unreadable.","solutions":["Inspect the cause exception in the stack trace for the underlying storage/format error","Verify storage credentials and network access to the warehouse location","Check that the dataset was fully written and not corrupted; re-run the writing job if a partial write occurred","Confirm Lance library version compatibility with the dataset format version"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// pre-check existence and storage access\nif (!lanceCatalog.tableExists(tablePath)) {\n    throw new TableNotExistException(catalogName, tablePath);\n}\nassertStorageReadable(warehousePath);","typeGuard":null,"tryCatchPattern":"try {\n    catalogTable = lanceCatalog.getTable(tablePath);\n} catch (TableNotExistException e) {\n    // genuinely missing table\n} catch (CatalogException e) {\n    // storage/format failure: inspect cause, check credentials/network\n}","preventionTips":["Verify object-storage credentials and connectivity before running jobs","Keep Lance reader/writer versions compatible","Detect and repair partially written datasets","Distinguish not-found from access failures by catching both exception types"],"tags":["lance","catalog","storage"],"backgroundTag":"resource-not-found","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}