{"record":{"id":"9fd7fa7c2d590f17","repo":"apache/iceberg","slug":"an-error-occurred-reloading-table-table-was-no-9fd7fa","errorCode":null,"errorMessage":"An error occurred reloading table {}, table was not reloaded","messagePattern":"An error occurred reloading table (.+?), table was not reloaded","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"flink/v2.3/flink/src/main/java/org/apache/iceberg/flink/sink/CachingTableSupplier.java","lineNumber":87,"sourceCode":"  }\n\n  void refreshTable() {\n    if (System.currentTimeMillis() > lastLoadTimeMillis + tableRefreshInterval.toMillis()) {\n      try {\n        if (!tableLoader.isOpen()) {\n          tableLoader.open();\n        }\n\n        this.table = tableLoader.loadTable();\n        this.lastLoadTimeMillis = System.currentTimeMillis();\n\n        LOG.info(\n            \"Table {} reloaded, next min load time threshold is {}\",\n            table.name(),\n            DateTimeUtil.formatTimestampMillis(\n                lastLoadTimeMillis + tableRefreshInterval.toMillis()));\n      } catch (Exception e) {\n        LOG.warn(\"An error occurred reloading table {}, table was not reloaded\", table.name(), e);\n      }\n    }\n  }\n}\n","sourceCodeStart":69,"sourceCodeEnd":92,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/flink/v2.3/flink/src/main/java/org/apache/iceberg/flink/sink/CachingTableSupplier.java#L69-L92","documentation":"Same as error 3402 in the Flink 2.3 flavor: CachingTableSupplier.refreshTable() catches an Exception from the periodic catalog table reload, logs this warning, and continues using the cached (stale) Table. Writers keep operating on outdated metadata until a later reload succeeds.","triggerScenarios":"The table load performed inside refreshTable() throws — catalog unreachable, expired credentials, insufficient permissions, or the table was dropped/renamed while the job was running.","commonSituations":"Transient REST/metastore outages; IAM credential rotation in long-running streaming jobs; concurrent DROP TABLE; overly aggressive refresh intervals causing throttling.","solutions":["Read the chained exception in the log to identify the catalog load failure and fix it.","Confirm the table exists and the job should keep running against it.","Increase the refresh interval to reduce catalog pressure/timeouts.","Fix credential renewal so long-running jobs can re-authenticate on reload."],"exampleFix":"// before: table dropped mid-job, reload keeps failing\ncatalog.dropTable(identifier);\n// after: stop the Flink job before dropping\ncatalog.dropTable(identifier); // only after job cancellation","handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"// alert if reload repeatedly fails; stale metadata may cause commit conflicts\nif (reloadFailures(table.name()) > 3) {\n  alert(\"table reload failing; sink running on stale metadata\");\n}","preventionTips":["Keep catalog endpoints healthy and reachable from the Flink cluster","Avoid DDL (DROP/RENAME) on tables with live writers","Tune refresh interval and credential lifetimes"],"tags":["flink","table-refresh","stale-metadata","sink"],"backgroundTag":"table-reload-failed","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}