{"record":{"id":"68ac65ad8a93b68e","repo":"apache/seatunnel","slug":"interrupted-closing-target-point-lookup-workers","errorCode":null,"errorMessage":"Interrupted closing target_point_lookup workers","messagePattern":"Interrupted closing target_point_lookup workers","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"warning","filePath":"seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/UpdateFileMetadataLoader.java","lineNumber":221,"sourceCode":"                future.cancel(true);\n            }\n            executor.shutdownNow();\n            try {\n                if (!executor.awaitTermination(30, TimeUnit.SECONDS)) {\n                    IOException cleanupFailure =\n                            new IOException(\"Timed out closing target_point_lookup workers\");\n                    if (failure != null) {\n                        failure.addSuppressed(cleanupFailure);\n                    } else {\n                        throw cleanupFailure;\n                    }\n                }\n            } catch (InterruptedException e) {\n                Thread.currentThread().interrupt();\n                if (failure != null) {\n                    failure.addSuppressed(e);\n                } else {\n                    throw new IOException(\"Interrupted closing target_point_lookup workers\", e);\n                }\n            }\n        }\n    }\n\n    @Getter\n    static final class Request {\n        private final int order;\n        private final String targetPath;\n\n        Request(int order, String targetPath) {\n            this.order = order;\n            this.targetPath = targetPath;\n        }\n    }\n\n    @Getter\n    static final class Result {","sourceCodeStart":203,"sourceCodeEnd":239,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/UpdateFileMetadataLoader.java#L203-L239","documentation":"While shutting down the worker pool used for target point lookups, loadPoints awaits termination; an InterruptedException during that await is rethrown as IOException('Interrupted closing target_point_lookup workers') when no earlier failure exists. It means job cancellation/interruption struck during worker cleanup.","triggerScenarios":"Thread interrupted while awaiting worker-pool termination in loadPoints — typically job cancellation, kill, or checkpoint/task interruption arriving during shutdown; only thrown when there was no prior lookup failure to attach the interrupt to.","commonSituations":"Users cancelling long-running jobs; engine killing tasks due to timeout or failover; shutdown hooks interrupting the thread during deployment restarts.","solutions":["Usually benign on intentional job cancellation — no action needed","If unexpected, check engine logs for who interrupted the task (failover, timeout) and raise task/checkpoint timeouts if too aggressive","Rerun the job; incremental metadata loading is resumable"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    loader.load(requests);\n} catch (IOException e) {\n    if (e.getMessage().contains(\"Interrupted closing target_point_lookup workers\")) {\n        LOG.info(\"Job interrupted during metadata loader shutdown; safe to rerun\");\n    } else throw e;\n}","preventionTips":["Avoid cancelling jobs mid-startup when possible; cancel at checkpoints","Increase engine task timeouts to reduce forced interruptions","Treat this as benign when you intentionally cancelled the job"],"tags":["interruption","threading","cleanup"],"backgroundTag":"invalid-state-transition","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"}