{"record":{"id":"8eff07230dbe2303","repo":"questdb/questdb","slug":"propertykey-qwp-max-uncommitted-rows-propertypat","errorCode":null,"errorMessage":"${PropertyKey.QWP_MAX_UNCOMMITTED_ROWS.propertyPath} must be at least 1","messagePattern":"(.+?) must be at least 1","errorType":"validation","errorClass":"ServerConfigurationException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/io/questdb/PropServerConfiguration.java","lineNumber":2017,"sourceCode":"            }\n            this.qwpMaxRowsPerTable = getInt(properties, env, PropertyKey.QWP_MAX_ROWS_PER_TABLE, QwpConstants.DEFAULT_MAX_ROWS_PER_TABLE);\n            if (qwpMaxRowsPerTable < 1 || qwpMaxRowsPerTable > QwpConstants.DEFAULT_MAX_ROWS_PER_TABLE) {\n                throw new ServerConfigurationException(\n                        PropertyKey.QWP_MAX_ROWS_PER_TABLE.getPropertyPath()\n                                + \" must be between 1 and \"\n                                + QwpConstants.DEFAULT_MAX_ROWS_PER_TABLE\n                );\n            }\n            this.qwpMaxTablesPerConnection = getInt(properties, env, PropertyKey.QWP_MAX_TABLES_PER_CONNECTION, QwpConstants.DEFAULT_MAX_TABLES_PER_CONNECTION);\n            if (qwpMaxTablesPerConnection < 1) {\n                throw new ServerConfigurationException(\n                        PropertyKey.QWP_MAX_TABLES_PER_CONNECTION.getPropertyPath()\n                                + \" must be at least 1\"\n                );\n            }\n            this.qwpMaxUncommittedRows = getLong(properties, env, PropertyKey.QWP_MAX_UNCOMMITTED_ROWS, QwpConstants.DEFAULT_MAX_UNCOMMITTED_ROWS);\n            if (qwpMaxUncommittedRows < 1) {\n                throw new ServerConfigurationException(\n                        PropertyKey.QWP_MAX_UNCOMMITTED_ROWS.getPropertyPath()\n                                + \" must be at least 1\"\n                );\n            }\n            long qwpUdpCommitInterval = getMillis(properties, env, PropertyKey.QWP_UDP_COMMIT_INTERVAL, COMMIT_INTERVAL_DEFAULT);\n            if (qwpUdpCommitInterval < 1L) {\n                throw new ServerConfigurationException(\n                        PropertyKey.QWP_UDP_COMMIT_INTERVAL.getPropertyPath()\n                                + \" must be at least 1ms\"\n                );\n            }\n            this.qwpUdpCommitInterval = qwpUdpCommitInterval;\n            int qwpUdpMaxUncommittedDatagrams = getInt(properties, env, PropertyKey.QWP_UDP_MAX_UNCOMMITTED_DATAGRAMS, 1_048_576);\n            if (qwpUdpMaxUncommittedDatagrams < 1) {\n                throw new ServerConfigurationException(\n                        PropertyKey.QWP_UDP_MAX_UNCOMMITTED_DATAGRAMS.getPropertyPath()\n                                + \" must be at least 1\"\n                );","sourceCodeStart":1999,"sourceCodeEnd":2035,"githubUrl":"https://github.com/questdb/questdb/blob/6610ab113b84528a73388b0722a38b97f9df78c2/core/src/main/java/io/questdb/PropServerConfiguration.java#L1999-L2035","documentation":"Validates qwp.max.uncommitted.rows (PropertyKey.QWP_MAX_UNCOMMITTED_ROWS, default QwpConstants.DEFAULT_MAX_UNCOMMITTED_ROWS), the global uncommitted-row budget for QWP ingestion. Values below 1 (0 or negative) are rejected: a non-positive commit threshold would never trigger commits and could grow memory without bound, so the server refuses to start.","triggerScenarios":"Setting qwp.max.uncommitted.rows=0 or a negative long in server.conf / env. Read with getLong() and checked with '< 1' immediately after, before the UDP commit interval parsing that follows.","commonSituations":"Trying to switch to time-based-only commits by zeroing the row threshold (use a large value instead); copy-paste from an example config with a placeholder 0; environment templating emitting 0 for unset variables.","solutions":["Set qwp.max.uncommitted.rows to a positive value, e.g. 500000","If you want commits driven mainly by the interval, set a large row budget rather than 0","Leave the key unset for the default"],"exampleFix":"# before\nqwp.max.uncommitted.rows=0\n\n# after\nqwp.max.uncommitted.rows=500000","handlingStrategy":"validation","validationCode":"long rows = Long.parseLong(firstNonBlank(props.get(\"qwp.max.uncommitted.rows\"), String.valueOf(DEFAULT)));\nif (rows < 1) {\n    throw new IllegalStateException(\"qwp.max.uncommitted.rows must be >= 1, got \" + rows);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Prefer interval-driven commits by raising the row budget, not zeroing it","Treat 0 in generated configs as a missing-value bug"],"tags":["config","qwp","ingestion","commit","startup"],"backgroundTag":null,"analyzedSha":"6610ab113b84528a73388b0722a38b97f9df78c2","analyzedAt":"2026-08-14T15:30:21.451Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}