Hello,
Started having this intermittent error after creating a cluster with one read-write node (call it node.1) and 8 read-only nodes:
System.Exception: database disk image is malformed
After some time I noticied this happening while another process was writing (through node.1) (my "reading service" only queries read-only nodes)
Bellow the status query (don't know if this has something meaningful):
"build": {
"branch": "master",
"build_time": "unknown",
"commit": "0cbff00dc99261576cc7dd95b902ec1fd7d7bb8f",
"compiler": "gc",
"version": "6"
},
"cluster": {
"api_addr": "vm-16cores:4001",
"https": "false"
},
"http": {
"auth": "disabled",
"cluster": {
"timeout": 30000000000
}
},
"node": {
"start_time": "2021-11-11T17:49:52.6710257Z",
"uptime": "3h20m31.2287012s"
},
"os": {
"executable": "C:\\Program Files\\Finantech\\MemFeedSetup\\rqlited.exe",
"hostname": "VM-16cores",
"page_size": 4096,
"pid": 12660,
"ppid": 11316
},
"runtime": {
"GOARCH": "amd64",
"GOMAXPROCS": 16,
"GOOS": "windows",
"num_cpu": 16,
"num_goroutine": 64,
"version": "go1.17.1"
},
"store": {
"apply_timeout": "10s",
"db_applied_index": 22838,
"db_conf": {
"memory": true,
"fk_constraints": false
},
"dir": "C:\\Program Files\\Finantech\\MemFeedSetup\\node.1",
"dir_size": 138844593,
"election_timeout": "1s",
"fsm_index": 22838,
"heartbeat_timeout": "1s",
"leader": {
"node_id": "vm-16cores:4002"
},
"node_id": "vm-16cores:4002",
"nodes": [
{
"id": "vm-16cores:4002",
"suffrage": "Voter"
},
{
"id": "vm-16cores:4004",
"suffrage": "Nonvoter"
},
{
"id": "vm-16cores:4006",
"suffrage": "Nonvoter"
},
{
"id": "vm-16cores:4008",
"suffrage": "Nonvoter"
},
{
"id": "vm-16cores:4010",
"suffrage": "Nonvoter"
},
{
"id": "vm-16cores:4012",
"suffrage": "Nonvoter"
},
{
"id": "vm-16cores:4014",
"suffrage": "Nonvoter"
},
{
"id": "vm-16cores:4016",
"suffrage": "Nonvoter"
},
{
"id": "vm-16cores:4018",
"suffrage": "Nonvoter"
}
],
"raft": {
"applied_index": 22838,
"bolt": {
"num_free_pages": 573,
"num_pending_pages": 9,
"free_alloc": 2383872,
"free_list_inuse": 4672,
"num_tx_read": 2743,
"num_tx_open": 0,
"tx_stats": {
"page_count": 125375,
"page_alloc": 1220620288,
"cursor_count": 74025,
"node_count": 94140,
"node_deref": 38,
"rebalance": 6247,
"rebalance_time": 3817100,
"split": 11540,
"spill": 102529,
"spill_time": 1370412300,
"write": 148221,
"write_time": 222163569800
}
},
"commit_index": 22838,
"fsm_pending": 0,
"last_contact": 0,
"last_log_index": 22838,
"last_log_term": 2,
"last_snapshot_index": 16461,
"last_snapshot_term": 2,
"latest_configuration_index": 0,
"log_size": 134217728,
"num_peers": 0,
"protocol_version": 3,
"protocol_version_max": 3,
"protocol_version_min": 0,
"snapshot_version_max": 1,
"snapshot_version_min": 0,
"state": "Leader",
"term": 2
},
"request_marshaler": {
"compression_batch": 5,
"compression_size": 150,
"force_compression": false
},
"snapshot_interval": 30000000000,
"snapshot_threshold": 8192,
"sqlite3": {
"compile_options": [
"COMPILER=gcc-10.3.0",
"DEFAULT_WAL_SYNCHRONOUS=1",
"ENABLE_DBSTAT_VTAB",
"ENABLE_FTS3",
"ENABLE_FTS3_PARENTHESIS",
"ENABLE_JSON1",
"ENABLE_RTREE",
"ENABLE_UPDATE_DELETE_LIMIT",
"OMIT_DEPRECATED",
"OMIT_SHARED_CACHE",
"SYSTEM_MALLOC",
"THREADSAFE=1"
],
"conn_pool_stats": {
"ro": {
"max_open_connections": 0,
"open_connections": 2,
"in_use": 0,
"idle": 2,
"wait_count": 0,
"wait_duration": 0,
"max_idle_closed": 0,
"max_idle_time_closed": 0,
"max_lifetime_closed": 0
},
"rw": {
"max_open_connections": 1,
"open_connections": 1,
"in_use": 0,
"idle": 1,
"wait_count": 0,
"wait_duration": 0,
"max_idle_closed": 0,
"max_idle_time_closed": 0,
"max_lifetime_closed": 0
}
},
"db_size": 9199616,
"mem_stats": {
"cache_size": -2000,
"freelist_count": 2,
"hard_heap_limit": 0,
"max_page_count": 1073741823,
"page_count": 2246,
"page_size": 4096,
"soft_heap_limit": 0
},
"path": ":memory:",
"ro_dsn": "file:/CnbqfGggdPkhBtANlAph?mode=ro\u0026vfs=memdb\u0026_txlock=deferred\u0026_fk=false",
"rw_dsn": "file:/CnbqfGggdPkhBtANlAph?mode=rw\u0026vfs=memdb\u0026_txlock=immediate\u0026_fk=false",
"version": "3.36.0"
},
"trailing_logs": 10240
}
}
My read request:
--header 'Content-Type: application/json' \
--data-raw '["WITH grupos_ AS MATERIALIZED (\r\n -- Grupos associados a \u00C3\u00ADndices\r\n SELECT \r\n sg.SECURITY_GROUP_TYPE\tGRUPO,\r\n sg.SECURITY_GROUP_ID\t\tDSC_INDICE,\r\n sg.DESCR\t\t\t\t\t DESCRICAO, \r\n --fn.COD_MNEMONICA,\r\n --'\'''\''\t\t\t\t\t\tCODIGO,\r\n --( SELECT ALIAS FROM SMS_EXCHANGE_ALIAS WHERE EXCHANGE_ID = se.EXCHANGE_ID AND TYPE = '\''COD_BOLSA'\'' )\r\n --\t\t\t\t\t\t\tCOD_BOLSA, \t\t\tAS COD_BOLSA, -- Exemplo: 24\r\n '\''I'\'' \t\t\t\t\t\t TIPO,\r\n se.SECURITY_EXCHANGE_ID,\r\n se.EXCHANGE_ID,\r\n se.SYMBOL,\r\n se.SECURITY_TYPE\r\n FROM SMS_SECURITY_GROUP sg\r\n JOIN SMS_SECURITY_EXCHANGE se ON se.SECURITY_EXCHANGE_ID = sg.SECURITY_EXCHANGE_ID\r\n WHERE\r\n ( '\''PSI20'\'' IS NULL OR sg.SECURITY_GROUP_ID = '\''PSI20'\'' )\r\n AND\t ( null IS NULL OR sg.SECURITY_GROUP_TYPE = null )\r\n UNION ALL\r\n -- T\u00C3\u00ADtulos dos grupos (retornar se 1 > 0)\r\n SELECT \r\n sg.SECURITY_GROUP_TYPE\tGRUPO,\r\n sg.SECURITY_GROUP_ID\t DSC_INDICE,\r\n '\'''\'' \t\t\t\t\t DESCRICAO,\r\n --sgd.SYMBOL\t\t\t\tCOD_MNEMONICA,\r\n --se.COD_ISIN\t\t\t\tCODIGO,\r\n --( SELECT ALIAS FROM SMS_EXCHANGE_ALIAS WHERE EXCHANGE_ID = se.EXCHANGE_ID AND TYPE = '\''COD_BOLSA'\'' )\r\n --\t\t\t\t\t\t\tCOD_BOLSA, \t\t\tAS COD_BOLSA, -- Exemplo: 24\r\n '\''D'\'' \t\t\t\t\t TIPO,\r\n sgd.SECURITY_EXCHANGE_ID,\r\n sgd.EXCHANGE_ID,\r\n sgd.SYMBOL,\r\n sgd.SECURITY_TYPE\r\n FROM \r\n SMS_SECURITY_GROUP sg\r\n JOIN SMS_SECURITY_GROUP_DETAIL sgd ON sgd.SECURITY_GROUP_ID = sg.SECURITY_GROUP_ID\r\n \/*JOIN SMS_SECURITY_EXCHANGE se ON se.EXCHANGE_ID = sgd.EXCHANGE_ID\r\n AND se.SYMBOL = sgd.SYMBOL\r\n AND se.SECURITY_TYPE = sgd.SECURITY_TYPE*\/\r\n WHERE \r\n 1 > 0\r\n AND\t( '\''PSI20'\'' IS NULL OR sg.SECURITY_GROUP_ID = '\''PSI20'\'' )\r\n AND\t( null IS NULL OR sg.SECURITY_GROUP_TYPE = null )\r\n) \r\nSELECT \/* SGCFGruposTitulos *\/\r\n\t\t-- ****\r\n\t\t-- Grupo\r\n\t\t--\r\n\t\ttit.GRUPO,\r\n\t\ttit.DSC_INDICE,\r\n\t\ttit.DESCRICAO,\r\n\t\t-- ****\r\n\t\t-- \u00C3\u008Dndice \/ T\u00C3\u00ADtulo\r\n\t\t--\r\n\t\ttit.TIPO, -- '\''I'\''-\u00C3\u008Dndice (grupo) \/ '\''D'\''-Detalhe (t\u00C3\u00ADtulo grupo)\r\n\t\ttit_fn.COD_MNEMONICA,\r\n\t\ttit_fn.VAL_BOLSA,\r\n\t\ttit_fn.DSC_BOLSA,\r\n\t\t-- ****\r\n\t\t-- IF @COTACAO > 0\r\n\t\t--\r\n\t\tcot.DATA_COTACAO,\r\n\t\tcot.HORA_COTACAO,\r\n\t\tcot.VAL_COT_ABERTURA,\r\n\t\tcot.VAL_COT_MAX,\r\n\t\tcot.VAL_COT_MIN,\r\n\t\tcot.VAL_COT_FECHO, \r\n\t\tcot.VAL_COT_ULTIMA,\r\n\t\tcot.VAL_QT_ULTIMA,\r\n\t\tcot.VAL_COT_COMPRA,\r\n\t\tcot.VAL_COT_VENDA,\r\n\t\tcot.VAL_QT_COMPRA,\r\n\t\tcot.VAL_QT_VENDA,\r\n\t\tcot.VAL_QT_TRANS,\r\n\t\tcot.VAL_VARIACAO,\r\n\t\tcot.VAL_VARIACAO_ABS,\r\n\t\tcot.VAL_PRECO_MEDIO,\r\n\t\tcot.VAL_MONT_TRANS,\r\n\t\tcot.VAL_VARIACAO_ANO,\r\n\t\tcot.VAL_MONT_TOTAL,\r\n\t\t-- ****\r\n\t\t-- \u00C3\u008Dndice \/ T\u00C3\u00ADtulo\r\n\t\t--\r\n\t\tCASE WHEN tit.TIPO = '\''D'\'' THEN tit_fn.CODIGO END CODIGO,\r\n\t\ttit_fn.COD_BOLSA, \r\n\t\ttit_fn.COD_MOEDA,\r\n\t\ttit_fn.DSC_LONGA\r\nFROM grupos_ tit\r\n \t LEFT JOIN V_TP_FEED_NOMES tit_fn ON tit_fn.SECURITY_EXCHANGE_ID = tit.SECURITY_EXCHANGE_ID\r\n --tit_fn.EXCHANGE_ID = tit.EXCHANGE_ID AND tit_fn.SECURITY_TYPE = tit.SECURITY_TYPE AND tit_fn.SYMBOL = tit.SYMBOL\r\n\t -- IF @COTACAO > 0\r\n\t LEFT JOIN V_TP_FEED_COTACOES_ONLINE_DELAY cot ON 1 > 0\r\n --AND cot.SECURITY_EXCHANGE_ID = tit.SECURITY_EXCHANGE_ID\r\n\t\t\t\t\t\t\t\t\t\t\t\t AND cot.EXCHANGE_ID = tit.EXCHANGE_ID\r\n\t\t\t\t\t\t\t\t\t\t\t\t AND cot.SYMBOL = tit.SYMBOL\r\n\t\t\t\t\t\t\t\t\t\t\t\t AND cot.SECURITY_TYPE = tit.SECURITY_TYPE\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t --IF @REALTIME > 0\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t --\t\tSET @TYPE = '\''TP_FEED_COTACOES'\''\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t --\tELSE\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t --\t\tSET @TYPE = '\''vCotacoesMix'\''\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t AND cot.ONLINE_DELAY = CASE\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t WHEN 1 > 0 THEN '\''O'\''\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t WHEN tit_fn.FLAG_BCP = '\''Y'\'' THEN '\''O'\''\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t WHEN tit_fn.FLAG_EURONEXT = '\''Y'\'' AND tit_fn.FLAG_INDEX = '\''Y'\'' THEN '\''O'\''\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t ELSE '\''D'\''\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t END\r\nORDER BY\r\n\ttit.GRUPO,\r\n\ttit.DSC_INDICE,\r\n\ttit.TIPO DESC\r\nLIMIT\t\t\t\r\n\tIFNULL(1000,0);"]'
If it helps at all, I can provide postman collection with db schema creation and DML.