{"record":{"id":"a3fee539b7d34958","repo":"apache/seatunnel","slug":"tablealreadyexistexception-table-tablepath-a","errorCode":null,"errorMessage":"TableAlreadyExistException: table '${tablePath}' already exists in catalog '${catalogName}'","messagePattern":"TableAlreadyExistException: table '(.+?)' already exists in catalog '(.+?)'","errorType":"exception","errorClass":"TableAlreadyExistException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-hbase/src/main/java/org/apache/seatunnel/connectors/seatunnel/hbase/catalog/HbaseCatalog.java","lineNumber":128,"sourceCode":"                (databaseName == null || databaseName.isEmpty())\n                        ? tableName\n                        : databaseName + \":\" + tableName;\n        return hbaseClient.tableExists(fullTableName);\n    }\n\n    @Override\n    public CatalogTable getTable(TablePath tablePath)\n            throws CatalogException, TableNotExistException {\n        throw new UnsupportedOperationException(\"Not implement\");\n    }\n\n    @Override\n    public void createTable(TablePath tablePath, CatalogTable table, boolean ignoreIfExists)\n            throws TableAlreadyExistException, DatabaseNotExistException, CatalogException {\n        checkNotNull(tablePath, \"tablePath cannot be null\");\n        if (tableExists(tablePath)) {\n            if (!ignoreIfExists) {\n                throw new TableAlreadyExistException(catalogName, tablePath);\n            }\n            return;\n        }\n        hbaseClient.createTable(\n                tablePath.getDatabaseName(),\n                tablePath.getTableName(),\n                hbaseParameters.getFamilyNames().values().stream()\n                        .filter(value -> !\"all_columns\".equals(value))\n                        .collect(Collectors.toList()),\n                ignoreIfExists);\n    }\n\n    @Override\n    public void dropTable(TablePath tablePath, boolean ignoreIfNotExists)\n            throws TableNotExistException, CatalogException {\n        checkNotNull(tablePath);\n        if (!tableExists(tablePath)) {\n            if (!ignoreIfNotExists) {","sourceCodeStart":110,"sourceCodeEnd":146,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-hbase/src/main/java/org/apache/seatunnel/connectors/seatunnel/hbase/catalog/HbaseCatalog.java#L110-L146","documentation":"Thrown by HbaseCatalog.createTable when the target HBase table already exists and ignoreIfExists is false. It is the standard catalog TableAlreadyExistException, so the message is a templated sentinel naming tablePath and catalogName.","triggerScenarios":"Calling createTable(tablePath, table, ignoreIfExists=false) for a table that already exists in HBase; auto-create logic running against a pre-existing table without ignoreIfExists=true.","commonSituations":"Re-running a job/pipeline that created the table earlier; concurrent jobs creating the same table; assuming HBase table names are per-namespace unique but reusing an old one.","solutions":["Pass ignoreIfExists = true to make creation idempotent.","Drop the existing table first (catalog.dropTable or HBase shell disable+drop).","Use a different table name/path for the new data."],"exampleFix":"// before\ncatalog.createTable(path, table, false); // fails on rerun\n// after\ncatalog.createTable(path, table, true); // skip if exists","handlingStrategy":"validation","validationCode":"if (catalog.tableExists(tablePath) && !ignoreIfExists) {\n    ignoreIfExists = true; // or drop first\n}","typeGuard":null,"tryCatchPattern":"try {\n    catalog.createTable(tablePath, table, false);\n} catch (TableAlreadyExistException e) {\n    LOG.info(\"Table {} already exists; reusing\", tablePath.getFullName());\n}","preventionTips":["Use ignoreIfExists = true for idempotent pipeline setup.","Check tableExists before creating.","Make re-runnable jobs tolerate pre-existing tables.","Coordinate table creation across concurrent jobs."],"tags":["hbase","catalog","duplicate"],"backgroundTag":"file-already-exists","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"}