{"record":{"id":"9d0b948d01b0b024","repo":"apache/cassandra","slug":"command-store-ops-is-a-write-only-table","errorCode":null,"errorMessage":"COMMAND_STORE_OPS + \" is a write-only table\"","messagePattern":"COMMAND_STORE_OPS \\+ \" is a write-only table\"","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/db/virtual/AccordDebugKeyspace.java","lineNumber":2017,"sourceCode":"                this.description = description;\n            }\n        }\n        private CommandStoreOpsTable()\n        {\n            super(parse(VIRTUAL_ACCORD_DEBUG, COMMAND_STORE_OPS,\n                        \"Update Accord CommandStore State\",\n                        \"CREATE TABLE %s (\\n\" +\n                        \"  command_store_id int,\\n\" +\n                        \"  op text,\" +\n                        \"  param text,\" +\n                        \"  PRIMARY KEY (command_store_id)\" +\n                        ')', Int32Type.instance), FAIL, UNSORTED);\n        }\n\n        @Override\n        protected void collect(PartitionsCollector collector)\n        {\n            throw new UnsupportedOperationException(COMMAND_STORE_OPS + \" is a write-only table\");\n        }\n\n        @Override\n        protected void applyRowUpdate(Object[] partitionKeys, Object[] clusteringKeys, ColumnMetadata[] columns, Object[] values)\n        {\n            int commandStoreId = (Integer) partitionKeys[0];\n\n            CommandStoreOp op = null;\n            String param = null;\n            for (int i = 0 ; i < columns.length ; ++i)\n            {\n                switch (columns[i].name.toString())\n                {\n                    default: throw new IllegalArgumentException(\"Unknown column \" + columns[i].name.toString());\n                    case \"op\":\n                        op = tryParse(values[i], true, CommandStoreOp.class, CommandStoreOp::valueOf);\n                        break;\n                    case \"param\":","sourceCodeStart":1999,"sourceCodeEnd":2035,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/db/virtual/AccordDebugKeyspace.java#L1999-L2035","documentation":"The `accord_command_store_ops` virtual table is write-only: INSERTs enqueue per-command-store debug operations, and reads are unsupported - collect() throws UnsupportedOperationException unconditionally.","triggerScenarios":"Running any SELECT against system_views.accord_command_store_ops, e.g. `SELECT * FROM system_views.accord_command_store_ops;`.","commonSituations":"Trying to list queued debug ops by reading the table; generic tooling that snapshots all system_views tables; misunderstanding virtual-table semantics assuming all are queryable.","solutions":["Do not SELECT from accord_command_store_ops; use INSERT to enqueue operations only.","Check results in the readable accord debug tables or logs after the op runs.","Request/provide a readable companion table upstream if op history is needed."],"exampleFix":"// before\nSELECT * FROM system_views.accord_command_store_ops;\n// after\nINSERT INTO system_views.accord_command_store_ops (command_store_id, op) VALUES (0, '<op>');","handlingStrategy":"validation","validationCode":"if (query.trim().toUpperCase().startsWith(\"SELECT\") && query.contains(\"accord_command_store_ops\"))\n    throw new IllegalArgumentException(\"accord_command_store_ops is write-only; do not SELECT from it\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only INSERT into accord_command_store_ops.","Do not assume all system_views virtual tables are readable.","Keep per-table read/write semantics documented in your ops runbook."],"tags":["virtual-table","unsupported-read","accord-debug"],"backgroundTag":"unsupported-operation","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}