{"record":{"id":"7ad6a3a03c2fca6d","repo":"apache/seatunnel","slug":"limit-must-be-1","errorCode":null,"errorMessage":"--limit must be >= 1","messagePattern":"--limit must be >= 1","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"seatunnel-edge-agent/seatunnel-edge-agent-starter/src/main/java/org/apache/seatunnel/edge/agent/starter/command/db/EdgeAgentDbCommand.java","lineNumber":155,"sourceCode":"                    any = true;\n                    long updatedAt = rs.getLong(\"oldest_updated_at\");\n                    System.out.printf(\n                            Locale.ROOT,\n                            \"  %-8s %s (%d ms ago)%n\",\n                            rs.getString(\"status\"),\n                            formatTime(updatedAt),\n                            ageMs(updatedAt));\n                }\n                if (!any) {\n                    System.out.println(\"  (empty)\");\n                }\n            }\n        }\n    }\n\n    private void runWalList(String status, int limit) throws Exception {\n        if (limit < 1) {\n            throw new IllegalArgumentException(\"--limit must be >= 1\");\n        }\n        if (status != null) {\n            validateWalStatus(status);\n        }\n\n        try (EdgeAgentDbConnection db = EdgeAgentDbConnection.openReadOnly(paths.getSqlitePath())) {\n            try (PreparedStatement statement =\n                    db.getConnection().prepareStatement(EdgeAgentDbSql.WAL_LIST)) {\n                statement.setString(1, status);\n                statement.setString(2, status);\n                statement.setInt(3, limit);\n                try (ResultSet rs = statement.executeQuery()) {\n                    System.out.printf(\n                            Locale.ROOT,\n                            \"%8s %10s %-8s %7s %24s %12s %8s%n\",\n                            \"id(pk)\",\n                            \"batch_id\",\n                            \"status\",","sourceCodeStart":137,"sourceCodeEnd":173,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-edge-agent/seatunnel-edge-agent-starter/src/main/java/org/apache/seatunnel/edge/agent/starter/command/db/EdgeAgentDbCommand.java#L137-L173","documentation":"runWalList validates the --limit option before querying the read-only SQLite connection. A limit below 1 cannot produce a meaningful page of WAL records, so the command rejects it with IllegalArgumentException rather than issuing a query returning nothing or unbounded rows.","triggerScenarios":"Running `agent db wal-list` with --limit 0 or a negative number; a script passing a computed limit that evaluates to 0.","commonSituations":"Shell variable defaults to 0 when unset; users confuse 'limit 0 = all rows' semantics from other tools with this CLI's requirement of limit >= 1.","solutions":["Re-run with --limit set to a positive integer, e.g. --limit 20.","Fix the shell script default so an unset variable yields a positive value: LIMIT=${LIMIT:-50}.","If you intended unlimited rows, use the largest sensible positive value; the CLI requires an explicit positive limit."],"exampleFix":"// before (script)\nagent db wal-list --limit ${LIMIT}\n// after (script)\nLIMIT=${LIMIT:-50}\nagent db wal-list --limit ${LIMIT}","handlingStrategy":"validation","validationCode":"limit = int(raw_limit) if raw_limit else 50\nif limit < 1:\n    raise ValueError('--limit must be >= 1')\nsubprocess.run(['agent', 'db', 'wal-list', '--limit', str(limit)], check=True)","typeGuard":null,"tryCatchPattern":"try:\n    run_wal_list(limit)\nexcept subprocess.CalledProcessError as e:\n    if '--limit must be >= 1' in e.stderr:\n        print('Fix the --limit value; it must be a positive integer')","preventionTips":["Default shell variables: LIMIT=${LIMIT:-50} so an unset var never becomes 0.","Remember limit 0 does not mean 'unlimited' in this CLI; pick a large positive number instead.","Validate numeric inputs in wrapper scripts before invoking the CLI."],"tags":["cli","validation","limit","argument-validation"],"backgroundTag":"value-out-of-range","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}