Skip to content

Commit 14cd1f2

Browse files
committed
Avoid deadlocks in query update of realtime_data on postgresql.
1 parent caa2c0c commit 14cd1f2

File tree

1 file changed

+23
-9
lines changed

1 file changed

+23
-9
lines changed

src/cs_data_processor/cs_data_processor.js

+23-9
Original file line numberDiff line numberDiff line change
@@ -231,25 +231,26 @@ const pipeline = [
231231
}
232232

233233
doInsertData = false
234-
sqlTransaction = 'START TRANSACTION;\n'
234+
sqlTransaction = ''
235235
let cntR = 0
236+
sqlTransaction =
237+
sqlTransaction +
238+
'INSERT INTO realtime_data (tag, time_tag, json_data) VALUES '
236239
while (!sqlRtDataQueue.isEmpty()) {
237240
doInsertData = true
238241
let sql = sqlRtDataQueue.peek()
239242
sqlRtDataQueue.dequeue()
240-
sqlTransaction =
241-
sqlTransaction +
242-
'INSERT INTO realtime_data (tag, time_tag, json_data) VALUES '
243-
sqlTransaction = sqlTransaction + ' (' + sql + ') '
244-
sqlTransaction =
245-
sqlTransaction +
246-
'ON CONFLICT (tag) DO UPDATE SET time_tag=EXCLUDED.time_tag, json_data=EXCLUDED.json_data;\n'
243+
sqlTransaction = sqlTransaction + '\n (' + sql + '),'
247244
cntR++
248245
}
246+
sqlTransaction = sqlTransaction.substring(0, sqlTransaction.length - 1) // remove last comma
247+
sqlTransaction = sqlTransaction + ' \n'
248+
sqlTransaction =
249+
sqlTransaction +
250+
'ON CONFLICT (tag) DO UPDATE SET time_tag=EXCLUDED.time_tag, json_data=EXCLUDED.json_data;\n'
249251
if (cntR) Log.log('PGSQL RT updates ' + cntR)
250252

251253
if (doInsertData) {
252-
sqlTransaction = sqlTransaction + 'COMMIT;\n'
253254
fs.writeFile(
254255
sqlFilesPath +
255256
'pg_rtdata_' +
@@ -450,6 +451,19 @@ const pipeline = [
450451
try {
451452
if (change.operationType === 'delete') return
452453

454+
// // for older versions of mongodb
455+
// if (
456+
// change.operationType === 'replace' &&
457+
// !change?.updateDescription?.updatedFields &&
458+
// change.fullDocument.sourceDataUpdate
459+
// ) {
460+
// change['updateDescription'] = {
461+
// updatedFields: {
462+
// sourceDataUpdate: change.fullDocument.sourceDataUpdate,
463+
// },
464+
// }
465+
// }
466+
453467
let isSOE = false
454468
let alarmRange = 0
455469

0 commit comments

Comments
 (0)