velocious 1.0.601 → 1.0.603
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -7
- package/build/database/drivers/base.js +191 -39
- package/build/database/drivers/mysql/deadlock-diagnostic-parser.js +227 -0
- package/build/database/drivers/mysql/index.js +21 -30
- package/build/database/live-query.js +4 -1
- package/build/database/operation.js +9 -0
- package/build/database/pool/async-tracked-multi-connection.js +10 -15
- package/build/database/pool/base.js +19 -2
- package/build/database/record/index.js +50 -2
- package/build/database/record-changes.js +18 -4
- package/build/src/database/drivers/base.d.ts +110 -3
- package/build/src/database/drivers/base.d.ts.map +1 -1
- package/build/src/database/drivers/base.js +175 -37
- package/build/src/database/drivers/mysql/deadlock-diagnostic-parser.d.ts +80 -0
- package/build/src/database/drivers/mysql/deadlock-diagnostic-parser.d.ts.map +1 -0
- package/build/src/database/drivers/mysql/deadlock-diagnostic-parser.js +196 -0
- package/build/src/database/drivers/mysql/index.d.ts +21 -2
- package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/index.js +19 -28
- package/build/src/database/live-query.d.ts +5 -0
- package/build/src/database/live-query.d.ts.map +1 -1
- package/build/src/database/live-query.js +4 -2
- package/build/src/database/operation.d.ts +5 -0
- package/build/src/database/operation.d.ts.map +1 -1
- package/build/src/database/operation.js +9 -1
- package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
- package/build/src/database/pool/async-tracked-multi-connection.js +11 -16
- package/build/src/database/pool/base.d.ts +7 -0
- package/build/src/database/pool/base.d.ts.map +1 -1
- package/build/src/database/pool/base.js +17 -2
- package/build/src/database/record/index.d.ts +36 -0
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +43 -3
- package/build/src/database/record-changes.d.ts +9 -1
- package/build/src/database/record-changes.d.ts.map +1 -1
- package/build/src/database/record-changes.js +18 -5
- package/build/src/sync/local-mutation-log.d.ts +7 -0
- package/build/src/sync/local-mutation-log.d.ts.map +1 -1
- package/build/src/sync/local-mutation-log.js +17 -1
- package/build/src/sync/sync-api-client-types.d.ts +8 -4
- package/build/src/sync/sync-api-client-types.d.ts.map +1 -1
- package/build/src/sync/sync-api-client-types.js +3 -3
- package/build/src/sync/sync-client-types.d.ts +25 -0
- package/build/src/sync/sync-client-types.d.ts.map +1 -1
- package/build/src/sync/sync-client-types.js +6 -1
- package/build/src/sync/sync-client.d.ts +43 -1
- package/build/src/sync/sync-client.d.ts.map +1 -1
- package/build/src/sync/sync-client.js +187 -37
- package/build/src/sync/sync-realtime-bridge.js +2 -2
- package/build/src/sync/sync-scope-store.d.ts +15 -1
- package/build/src/sync/sync-scope-store.d.ts.map +1 -1
- package/build/src/sync/sync-scope-store.js +31 -4
- package/build/src/tenants/tenant-handle.d.ts +81 -0
- package/build/src/tenants/tenant-handle.d.ts.map +1 -1
- package/build/src/tenants/tenant-handle.js +143 -1
- package/build/sync/local-mutation-log.js +17 -0
- package/build/sync/sync-api-client-types.js +2 -2
- package/build/sync/sync-client-types.js +5 -0
- package/build/sync/sync-client.js +198 -38
- package/build/sync/sync-realtime-bridge.js +1 -1
- package/build/sync/sync-scope-store.js +32 -3
- package/build/tenants/tenant-handle.js +165 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/database/drivers/base.js +191 -39
- package/src/database/drivers/mysql/deadlock-diagnostic-parser.js +227 -0
- package/src/database/drivers/mysql/index.js +21 -30
- package/src/database/live-query.js +4 -1
- package/src/database/operation.js +9 -0
- package/src/database/pool/async-tracked-multi-connection.js +10 -15
- package/src/database/pool/base.js +19 -2
- package/src/database/record/index.js +50 -2
- package/src/database/record-changes.js +18 -4
- package/src/sync/local-mutation-log.js +17 -0
- package/src/sync/sync-api-client-types.js +2 -2
- package/src/sync/sync-client-types.js +5 -0
- package/src/sync/sync-client.js +198 -38
- package/src/sync/sync-realtime-bridge.js +1 -1
- package/src/sync/sync-scope-store.js +32 -3
- package/src/tenants/tenant-handle.js +165 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export type InnodbDeadlockLockNode = {
|
|
2
|
+
/**
|
|
3
|
+
* - Opaque index identity.
|
|
4
|
+
*/
|
|
5
|
+
indexFingerprint: string;
|
|
6
|
+
/**
|
|
7
|
+
* - Allowlisted lock mode.
|
|
8
|
+
*/
|
|
9
|
+
lockMode: string;
|
|
10
|
+
/**
|
|
11
|
+
* - Lock relationship to its transaction.
|
|
12
|
+
*/
|
|
13
|
+
state: "conflicting" | "held" | "waiting";
|
|
14
|
+
/**
|
|
15
|
+
* - Opaque table identity.
|
|
16
|
+
*/
|
|
17
|
+
tableFingerprint: string;
|
|
18
|
+
};
|
|
19
|
+
export type InnodbDeadlockTransactionNode = {
|
|
20
|
+
/**
|
|
21
|
+
* - Bounded counterparty conflict edges whose owner is unavailable.
|
|
22
|
+
*/
|
|
23
|
+
conflictingLocks: InnodbDeadlockLockNode[];
|
|
24
|
+
/**
|
|
25
|
+
* - Bounded locks owned or awaited by this transaction.
|
|
26
|
+
*/
|
|
27
|
+
locks: InnodbDeadlockLockNode[];
|
|
28
|
+
/**
|
|
29
|
+
* - Report-local transaction ordinal.
|
|
30
|
+
*/
|
|
31
|
+
ordinal: number;
|
|
32
|
+
};
|
|
33
|
+
export type InnodbDeadlockParserState = {
|
|
34
|
+
/**
|
|
35
|
+
* - Current bounded transaction node.
|
|
36
|
+
*/
|
|
37
|
+
currentTransaction: InnodbDeadlockTransactionNode | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* - Current lock section state.
|
|
40
|
+
*/
|
|
41
|
+
currentLockState: "conflicting" | "held" | "waiting" | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* - Total emitted lock nodes.
|
|
44
|
+
*/
|
|
45
|
+
lockRecordCount: number;
|
|
46
|
+
/**
|
|
47
|
+
* - Whether a lock-node bound was reached.
|
|
48
|
+
*/
|
|
49
|
+
lockRecordsTruncated: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* - Bounded transaction nodes.
|
|
52
|
+
*/
|
|
53
|
+
transactionNodes: InnodbDeadlockTransactionNode[];
|
|
54
|
+
/**
|
|
55
|
+
* - Whether the transaction-node bound was reached.
|
|
56
|
+
*/
|
|
57
|
+
transactionNodesTruncated: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* - Transaction headers observed in the bounded section.
|
|
60
|
+
*/
|
|
61
|
+
transactions: number;
|
|
62
|
+
/**
|
|
63
|
+
* - Victim ordinal.
|
|
64
|
+
*/
|
|
65
|
+
victimTransaction: number | null;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Parses a bounded InnoDB latest-deadlock section into safe structural context.
|
|
69
|
+
* @param {string} status - SHOW ENGINE INNODB STATUS text.
|
|
70
|
+
* @returns {{lockRecordsTruncated: boolean, sectionTruncated: boolean, transactionNodes: InnodbDeadlockTransactionNode[], transactionNodesTruncated: boolean, transactions: number, victimTransaction: number | null}} - Structural deadlock summary.
|
|
71
|
+
*/
|
|
72
|
+
export default function parseInnodbDeadlockSummary(status: string): {
|
|
73
|
+
lockRecordsTruncated: boolean;
|
|
74
|
+
sectionTruncated: boolean;
|
|
75
|
+
transactionNodes: InnodbDeadlockTransactionNode[];
|
|
76
|
+
transactionNodesTruncated: boolean;
|
|
77
|
+
transactions: number;
|
|
78
|
+
victimTransaction: number | null;
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=deadlock-diagnostic-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deadlock-diagnostic-parser.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/mysql/deadlock-diagnostic-parser.js"],"names":[],"mappings":"AAIG,YAAkB,sBAAsB,GACxC;;;;IAAmB,gBAAgB,EAAxB,MAAM,CACjB;;;;IAAmB,QAAQ,EAAhB,MAAM,CACjB;;;;IAA+C,KAAK,EAAzC,aAAa,GAAG,MAAM,GAAG,SAAS,CAC7C;;;;IAAmB,gBAAgB,EAAxB,MAAM,CACnB;CAAA,CAAA;AAIE,YAAkB,6BAA6B,GAC/C;;;;IAAqC,gBAAgB,EAA1C,sBAAsB,EAAE,CACnC;;;;IAAqC,KAAK,EAA/B,sBAAsB,EAAE,CACnC;;;;IAAmB,OAAO,EAAf,MAAM,CACnB;CAAA,CAAA;AAIE,YAAkB,yBAAyB,GAC3C;;;;IAAsD,kBAAkB,EAA7D,6BAA6B,GAAG,SAAS,CACpD;;;;IAA2D,gBAAgB,EAAhE,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CACzD;;;;IAAmB,eAAe,EAAvB,MAAM,CACjB;;;;IAAoB,oBAAoB,EAA7B,OAAO,CAClB;;;;IAA4C,gBAAgB,EAAjD,6BAA6B,EAAE,CAC1C;;;;IAAoB,yBAAyB,EAAlC,OAAO,CAClB;;;;IAAmB,YAAY,EAApB,MAAM,CACjB;;;;IAA0B,iBAAiB,EAAhC,MAAM,GAAG,IAAI,CAC1B;CAAA,CAAA;AAWD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAAC,MAAM,EAH9C,MAG8C,GAF5C;IAAC,oBAAoB,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,6BAA6B,EAAE,CAAC;IAAC,yBAAyB,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAC,CA8CrN"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/**
|
|
3
|
+
* InnodbDeadlockLockNode type.
|
|
4
|
+
* @typedef {object} InnodbDeadlockLockNode
|
|
5
|
+
* @property {string} indexFingerprint - Opaque index identity.
|
|
6
|
+
* @property {string} lockMode - Allowlisted lock mode.
|
|
7
|
+
* @property {"conflicting" | "held" | "waiting"} state - Lock relationship to its transaction.
|
|
8
|
+
* @property {string} tableFingerprint - Opaque table identity.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* InnodbDeadlockTransactionNode type.
|
|
12
|
+
* @typedef {object} InnodbDeadlockTransactionNode
|
|
13
|
+
* @property {InnodbDeadlockLockNode[]} conflictingLocks - Bounded counterparty conflict edges whose owner is unavailable.
|
|
14
|
+
* @property {InnodbDeadlockLockNode[]} locks - Bounded locks owned or awaited by this transaction.
|
|
15
|
+
* @property {number} ordinal - Report-local transaction ordinal.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* InnodbDeadlockParserState type.
|
|
19
|
+
* @typedef {object} InnodbDeadlockParserState
|
|
20
|
+
* @property {InnodbDeadlockTransactionNode | undefined} currentTransaction - Current bounded transaction node.
|
|
21
|
+
* @property {"conflicting" | "held" | "waiting" | undefined} currentLockState - Current lock section state.
|
|
22
|
+
* @property {number} lockRecordCount - Total emitted lock nodes.
|
|
23
|
+
* @property {boolean} lockRecordsTruncated - Whether a lock-node bound was reached.
|
|
24
|
+
* @property {InnodbDeadlockTransactionNode[]} transactionNodes - Bounded transaction nodes.
|
|
25
|
+
* @property {boolean} transactionNodesTruncated - Whether the transaction-node bound was reached.
|
|
26
|
+
* @property {number} transactions - Transaction headers observed in the bounded section.
|
|
27
|
+
* @property {number | null} victimTransaction - Victim ordinal.
|
|
28
|
+
*/
|
|
29
|
+
import sha256Hex from "../../../utils/sha256-hex.js";
|
|
30
|
+
const INNODB_STATUS_SCAN_MAX_CHARS = 65536;
|
|
31
|
+
const INNODB_DEADLOCK_SECTION_MAX_CHARS = 16384;
|
|
32
|
+
const INNODB_DEADLOCK_TRANSACTION_MAX = 8;
|
|
33
|
+
const INNODB_DEADLOCK_LOCKS_PER_TRANSACTION_MAX = 8;
|
|
34
|
+
const INNODB_DEADLOCK_LOCK_RECORD_MAX = 32;
|
|
35
|
+
const INNODB_DEADLOCK_LINE_MAX_CHARS = 1024;
|
|
36
|
+
/**
|
|
37
|
+
* Parses a bounded InnoDB latest-deadlock section into safe structural context.
|
|
38
|
+
* @param {string} status - SHOW ENGINE INNODB STATUS text.
|
|
39
|
+
* @returns {{lockRecordsTruncated: boolean, sectionTruncated: boolean, transactionNodes: InnodbDeadlockTransactionNode[], transactionNodesTruncated: boolean, transactions: number, victimTransaction: number | null}} - Structural deadlock summary.
|
|
40
|
+
*/
|
|
41
|
+
export default function parseInnodbDeadlockSummary(status) {
|
|
42
|
+
const { candidate, sectionTruncated } = boundedDeadlockSection(status);
|
|
43
|
+
/** @type {InnodbDeadlockParserState} */
|
|
44
|
+
const state = {
|
|
45
|
+
currentTransaction: undefined,
|
|
46
|
+
currentLockState: undefined,
|
|
47
|
+
lockRecordCount: 0,
|
|
48
|
+
lockRecordsTruncated: false,
|
|
49
|
+
transactionNodes: [],
|
|
50
|
+
transactionNodesTruncated: false,
|
|
51
|
+
transactions: 0,
|
|
52
|
+
victimTransaction: null
|
|
53
|
+
};
|
|
54
|
+
for (const line of candidate.split(/\r?\n/)) {
|
|
55
|
+
const trimmed = line.slice(0, INNODB_DEADLOCK_LINE_MAX_CHARS).trim();
|
|
56
|
+
const transactionOrdinal = transactionHeaderOrdinal(trimmed);
|
|
57
|
+
if (transactionOrdinal !== undefined) {
|
|
58
|
+
startTransactionNode(state, transactionOrdinal);
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const lockStateMarker = transactionLockStateMarker(trimmed, state.currentTransaction);
|
|
62
|
+
if (lockStateMarker.matched) {
|
|
63
|
+
state.currentLockState = lockStateMarker.state;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
const victimOrdinal = victimTransactionOrdinal(trimmed);
|
|
67
|
+
if (victimOrdinal !== undefined)
|
|
68
|
+
state.victimTransaction = victimOrdinal;
|
|
69
|
+
appendLockNode(state, trimmed);
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
lockRecordsTruncated: state.lockRecordsTruncated,
|
|
73
|
+
sectionTruncated,
|
|
74
|
+
transactionNodes: state.transactionNodes,
|
|
75
|
+
transactionNodesTruncated: state.transactionNodesTruncated,
|
|
76
|
+
transactions: state.transactions,
|
|
77
|
+
victimTransaction: state.victimTransaction
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Extracts and caps the latest-deadlock section.
|
|
82
|
+
* @param {string} status - Raw server status.
|
|
83
|
+
* @returns {{candidate: string, sectionTruncated: boolean}} - Bounded candidate and truncation state.
|
|
84
|
+
*/
|
|
85
|
+
function boundedDeadlockSection(status) {
|
|
86
|
+
const scannedStatus = status.slice(0, INNODB_STATUS_SCAN_MAX_CHARS);
|
|
87
|
+
const deadlockStart = scannedStatus.indexOf("LATEST DETECTED DEADLOCK");
|
|
88
|
+
const availableSection = deadlockStart >= 0 ? scannedStatus.slice(deadlockStart) : "";
|
|
89
|
+
const boundedSection = availableSection.slice(0, INNODB_DEADLOCK_SECTION_MAX_CHARS);
|
|
90
|
+
const sectionEndMatch = /\n-{10,}\r?\nTRANSACTIONS\r?\n-{10,}/.exec(boundedSection);
|
|
91
|
+
const scannedStatusTruncated = status.length > scannedStatus.length;
|
|
92
|
+
return {
|
|
93
|
+
candidate: sectionEndMatch ? boundedSection.slice(0, sectionEndMatch.index) : boundedSection,
|
|
94
|
+
sectionTruncated: !sectionEndMatch && deadlockStart >= 0 && (availableSection.length > boundedSection.length || scannedStatusTruncated)
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Returns a fixed-format transaction header ordinal.
|
|
99
|
+
* @param {string} line - Bounded status line.
|
|
100
|
+
* @returns {number | undefined} - Transaction ordinal.
|
|
101
|
+
*/
|
|
102
|
+
function transactionHeaderOrdinal(line) {
|
|
103
|
+
const match = /^\*\*\* \((\d{1,6})\) TRANSACTION:$/.exec(line);
|
|
104
|
+
return match ? Number(match[1]) : undefined;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Starts a bounded transaction node.
|
|
108
|
+
* @param {InnodbDeadlockParserState} state - Parser state.
|
|
109
|
+
* @param {number} ordinal - Transaction ordinal.
|
|
110
|
+
* @returns {void}
|
|
111
|
+
*/
|
|
112
|
+
function startTransactionNode(state, ordinal) {
|
|
113
|
+
state.transactions++;
|
|
114
|
+
state.currentLockState = undefined;
|
|
115
|
+
if (state.transactionNodes.length >= INNODB_DEADLOCK_TRANSACTION_MAX) {
|
|
116
|
+
state.currentTransaction = undefined;
|
|
117
|
+
state.transactionNodesTruncated = true;
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
state.currentTransaction = { conflictingLocks: [], locks: [], ordinal };
|
|
121
|
+
state.transactionNodes.push(state.currentTransaction);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Parses a fixed-format held/waiting marker for the current transaction.
|
|
125
|
+
* @param {string} line - Bounded status line.
|
|
126
|
+
* @param {InnodbDeadlockTransactionNode | undefined} currentTransaction - Current transaction.
|
|
127
|
+
* @returns {{matched: boolean, state: "conflicting" | "held" | "waiting" | undefined}} - Marker result.
|
|
128
|
+
*/
|
|
129
|
+
function transactionLockStateMarker(line, currentTransaction) {
|
|
130
|
+
const numberedMatch = /^\*\*\* \((\d{1,6})\) (HOLDS THE LOCK\(S\)|WAITING FOR THIS LOCK TO BE GRANTED):$/.exec(line);
|
|
131
|
+
if (numberedMatch) {
|
|
132
|
+
if (!currentTransaction || currentTransaction.ordinal != Number(numberedMatch[1]))
|
|
133
|
+
return { matched: true, state: undefined };
|
|
134
|
+
return { matched: true, state: numberedMatch[2] == "HOLDS THE LOCK(S)" ? "held" : "waiting" };
|
|
135
|
+
}
|
|
136
|
+
const unnumberedMatch = /^\*\*\* (WAITING FOR THIS LOCK TO BE GRANTED|CONFLICTING WITH):$/.exec(line);
|
|
137
|
+
if (!unnumberedMatch)
|
|
138
|
+
return { matched: false, state: undefined };
|
|
139
|
+
if (!currentTransaction)
|
|
140
|
+
return { matched: true, state: undefined };
|
|
141
|
+
return { matched: true, state: unnumberedMatch[1] == "CONFLICTING WITH" ? "conflicting" : "waiting" };
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Returns a fixed-format victim ordinal.
|
|
145
|
+
* @param {string} line - Bounded status line.
|
|
146
|
+
* @returns {number | undefined} - Victim ordinal.
|
|
147
|
+
*/
|
|
148
|
+
function victimTransactionOrdinal(line) {
|
|
149
|
+
const match = /^\*\*\* WE ROLL BACK TRANSACTION \((\d{1,6})\)$/.exec(line);
|
|
150
|
+
return match ? Number(match[1]) : undefined;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Appends one bounded, fixed-format lock node when the line is eligible.
|
|
154
|
+
* @param {InnodbDeadlockParserState} state - Parser state.
|
|
155
|
+
* @param {string} line - Bounded status line.
|
|
156
|
+
* @returns {void}
|
|
157
|
+
*/
|
|
158
|
+
function appendLockNode(state, line) {
|
|
159
|
+
if (!state.currentTransaction || !state.currentLockState || !line.startsWith("RECORD LOCKS "))
|
|
160
|
+
return;
|
|
161
|
+
if (state.lockRecordCount >= INNODB_DEADLOCK_LOCK_RECORD_MAX ||
|
|
162
|
+
state.currentTransaction.locks.length + state.currentTransaction.conflictingLocks.length >= INNODB_DEADLOCK_LOCKS_PER_TRANSACTION_MAX) {
|
|
163
|
+
state.lockRecordsTruncated = true;
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const lock = deadlockLockNode(line, state.currentLockState);
|
|
167
|
+
if (!lock)
|
|
168
|
+
return;
|
|
169
|
+
if (state.currentLockState == "conflicting") {
|
|
170
|
+
state.currentTransaction.conflictingLocks.push(lock);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
state.currentTransaction.locks.push(lock);
|
|
174
|
+
}
|
|
175
|
+
state.lockRecordCount++;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Parses one fixed-format RECORD LOCKS line into safe structural fields.
|
|
179
|
+
* @param {string} line - One bounded InnoDB status line.
|
|
180
|
+
* @param {"conflicting" | "held" | "waiting"} state - Lock relationship to its transaction.
|
|
181
|
+
* @returns {InnodbDeadlockLockNode | undefined} - Safe lock node.
|
|
182
|
+
*/
|
|
183
|
+
function deadlockLockNode(line, state) {
|
|
184
|
+
const identifier = "(?:`(?:``|[^`\\r\\n]){1,128}`|[A-Za-z0-9_$-]{1,128})";
|
|
185
|
+
const tableIdentifier = `(?:${identifier}\\.)?${identifier}`;
|
|
186
|
+
const lockMatch = new RegExp(`^RECORD LOCKS .{1,512}? index (${identifier}) of table (${tableIdentifier}) trx id \\S{1,64}(?: \\S{1,64})? lock_mode (X|S|IX|IS|AUTO_INC)(?:\\s|$)`).exec(line);
|
|
187
|
+
if (!lockMatch)
|
|
188
|
+
return undefined;
|
|
189
|
+
return {
|
|
190
|
+
indexFingerprint: `sha256:${sha256Hex(`innodb-index:v1\0${lockMatch[1]}`)}`,
|
|
191
|
+
lockMode: lockMatch[3],
|
|
192
|
+
state,
|
|
193
|
+
tableFingerprint: `sha256:${sha256Hex(`innodb-table:v1\0${lockMatch[2]}`)}`
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVhZGxvY2stZGlhZ25vc3RpYy1wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9teXNxbC9kZWFkbG9jay1kaWFnbm9zdGljLXBhcnNlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVo7Ozs7Ozs7R0FPRztBQUVIOzs7Ozs7R0FNRztBQUVIOzs7Ozs7Ozs7OztHQVdHO0FBRUgsT0FBTyxTQUFTLE1BQU0sOEJBQThCLENBQUE7QUFFcEQsTUFBTSw0QkFBNEIsR0FBRyxLQUFLLENBQUE7QUFDMUMsTUFBTSxpQ0FBaUMsR0FBRyxLQUFLLENBQUE7QUFDL0MsTUFBTSwrQkFBK0IsR0FBRyxDQUFDLENBQUE7QUFDekMsTUFBTSx5Q0FBeUMsR0FBRyxDQUFDLENBQUE7QUFDbkQsTUFBTSwrQkFBK0IsR0FBRyxFQUFFLENBQUE7QUFDMUMsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLENBQUE7QUFFM0M7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxPQUFPLFVBQVUsMEJBQTBCLENBQUMsTUFBTTtJQUN2RCxNQUFNLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDcEUsd0NBQXdDO0lBQ3hDLE1BQU0sS0FBSyxHQUFHO1FBQ1osa0JBQWtCLEVBQUUsU0FBUztRQUM3QixnQkFBZ0IsRUFBRSxTQUFTO1FBQzNCLGVBQWUsRUFBRSxDQUFDO1FBQ2xCLG9CQUFvQixFQUFFLEtBQUs7UUFDM0IsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQix5QkFBeUIsRUFBRSxLQUFLO1FBQ2hDLFlBQVksRUFBRSxDQUFDO1FBQ2YsaUJBQWlCLEVBQUUsSUFBSTtLQUN4QixDQUFBO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDNUMsTUFBTSxPQUFPLEdB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SUFBSSxhQUFhLEVBQUUsQ0FBQztRQUM1QyxLQUFLLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3RELENBQUM7U0FBTSxDQUFDO1FBQ04sS0FBSyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDM0MsQ0FBQztJQUNELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQTtBQUN6QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLElBQUksRUFBRSxLQUFLO0lBQ25DLE1BQU0sVUFBVSxHQUFHLHNEQUFzRCxDQUFBO0lBQ3pFLE1BQU0sZUFBZSxHQUFHLE1BQU0sVUFBVSxRQUFRLFVBQVUsRUFBRSxDQUFBO0lBQzVELE1BQU0sU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLGtDQUFrQyxVQUFVLGVBQWUsZUFBZSwyRUFBMkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUU5TCxJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBRWhDLE9BQU87UUFDTCxnQkFBZ0IsRUFBRSxVQUFVLFNBQVMsQ0FBQyxvQkFBb0IsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUMzRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN0QixLQUFLO1FBQ0wsZ0JBQWdCLEVBQUUsVUFBVSxTQUFTLENBQUMsb0JBQW9CLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7S0FDNUUsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBJbm5vZGJEZWFkbG9ja0xvY2tOb2RlIHR5cGUuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBJbm5vZGJEZWFkbG9ja0xvY2tOb2RlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaW5kZXhGaW5nZXJwcmludCAtIE9wYXF1ZSBpbmRleCBpZGVudGl0eS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBsb2NrTW9kZSAtIEFsbG93bGlzdGVkIGxvY2sgbW9kZS5cbiAqIEBwcm9wZXJ0eSB7XCJjb25mbGljdGluZ1wiIHwgXCJoZWxkXCIgfCBcIndhaXRpbmdcIn0gc3RhdGUgLSBMb2NrIHJlbGF0aW9uc2hpcCB0byBpdHMgdHJhbnNhY3Rpb24uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGFibGVGaW5nZXJwcmludCAtIE9wYXF1ZSB0YWJsZSBpZGVudGl0eS5cbiAqL1xuXG4vKipcbiAqIElubm9kYkRlYWRsb2NrVHJhbnNhY3Rpb25Ob2RlIHR5cGUuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBJbm5vZGJEZWFkbG9ja1RyYW5zYWN0aW9uTm9kZVxuICogQHByb3BlcnR5IHtJbm5vZGJEZWFkbG9ja0xvY2tOb2RlW119IGNvbmZsaWN0aW5nTG9ja3MgLSBCb3VuZGVkIGNvdW50ZXJwYXJ0eSBjb25mbGljdCBlZGdlcyB3aG9zZSBvd25lciBpcyB1bmF2YWlsYWJsZS5cbiAqIEBwcm9wZXJ0eSB7SW5ub2RiRGVhZGxvY2tMb2NrTm9kZVtdfSBsb2NrcyAtIEJvdW5kZWQgbG9ja3Mgb3duZWQgb3IgYXdhaXRlZCBieSB0aGlzIHRyYW5zYWN0aW9uLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IG9yZGluYWwgLSBSZXBvcnQtbG9jYWwgdHJhbnNhY3Rpb24gb3JkaW5hbC5cbiAqL1xuXG4vKipcbiAqIElubm9kYkRlYWRsb2NrUGFyc2VyU3RhdGUgdHlwZS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IElubm9kYkRlYWRsb2NrUGFyc2VyU3RhdGVcbiAqIEBwcm9wZXJ0eSB7SW5ub2RiRGVhZGxvY2tUcmFuc2FjdGlvbk5vZGUgfCB1bmRlZmluZWR9IGN1cnJlbnRUcmFuc2FjdGlvbiAtIEN1cnJlbnQgYm91bmRlZCB0cmFuc2FjdGlvbiBub2RlLlxuICogQHByb3BlcnR5IHtcImNvbmZsaWN0aW5nXCIgfCBcImhlbGRcIiB8IFwid2FpdGluZ1wiIHwgdW5kZWZpbmVkfSBjdXJyZW50TG9ja1N0YXRlIC0gQ3VycmVudCBsb2NrIHNlY3Rpb24gc3RhdGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gbG9ja1JlY29yZENvdW50IC0gVG90YWwgZW1pdHRlZCBsb2NrIG5vZGVzLlxuICogQHByb3BlcnR5IHtib29sZWFufSBsb2NrUmVjb3Jkc1RydW5jYXRlZCAtIFdoZXRoZXIgYSBsb2NrLW5vZGUgYm91bmQgd2FzIHJlYWNoZWQuXG4gKiBAcHJvcGVydHkge0lubm9kYkRlYWRsb2NrVHJhbnNhY3Rpb25Ob2RlW119IHRyYW5zYWN0aW9uTm9kZXMgLSBCb3VuZGVkIHRyYW5zYWN0aW9uIG5vZGVzLlxuICogQHByb3BlcnR5IHtib29sZWFufSB0cmFuc2FjdGlvbk5vZGVzVHJ1bmNhdGVkIC0gV2hldGhlciB0aGUgdHJhbnNhY3Rpb24tbm9kZSBib3VuZCB3YXMgcmVhY2hlZC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0cmFuc2FjdGlvbnMgLSBUcmFuc2FjdGlvbiBoZWFkZXJzIG9ic2VydmVkIGluIHRoZSBib3VuZGVkIHNlY3Rpb24uXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IHZpY3RpbVRyYW5zYWN0aW9uIC0gVmljdGltIG9yZGluYWwuXG4gKi9cblxuaW1wb3J0IHNoYTI1NkhleCBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvc2hhMjU2LWhleC5qc1wiXG5cbmNvbnN0IElOTk9EQl9TVEFUVVNfU0NBTl9NQVhfQ0hBUlMgPSA2NTUzNlxuY29uc3QgSU5OT0RCX0RFQURMT0NLX1NFQ1RJT05fTUFYX0NIQVJTID0gMTYzODRcbmNvbnN0IElOTk9EQl9ERUFETE9DS19UUkFOU0FDVElPTl9NQVggPSA4XG5jb25zdCBJTk5PREJfREVBRExPQ0tfTE9DS1NfUEVSX1RSQU5TQUNUSU9OX01BWCA9IDhcbmNvbnN0IElOTk9EQl9ERUFETE9DS19MT0NLX1JFQ09SRF9NQVggPSAzMlxuY29uc3QgSU5OT0RCX0RFQURMT0NLX0xJTkVfTUFYX0NIQVJTID0gMTAyNFxuXG4vKipcbiAqIFBhcnNlcyBhIGJvdW5kZWQgSW5ub0RCIGxhdGVzdC1kZWFkbG9jayBzZWN0aW9uIGludG8gc2FmZSBzdHJ1Y3R1cmFsIGNvbnRleHQuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzIC0gU0hPVyBFTkdJTkUgSU5OT0RCIFNUQVRVUyB0ZXh0LlxuICogQHJldHVybnMge3tsb2NrUmVjb3Jkc1RydW5jYXRlZDogYm9vbGVhbiwgc2VjdGlvblRydW5jYXRlZDogYm9vbGVhbiwgdHJhbnNhY3Rpb25Ob2RlczogSW5ub2RiRGVhZGxvY2tUcmFuc2FjdGlvbk5vZGVbXSwgdHJhbnNhY3Rpb25Ob2Rlc1RydW5jYXRlZDogYm9vbGVhbiwgdHJhbnNhY3Rpb25zOiBudW1iZXIsIHZpY3RpbVRyYW5zYWN0aW9uOiBudW1iZXIgfCBudWxsfX0gLSBTdHJ1Y3R1cmFsIGRlYWRsb2NrIHN1bW1hcnkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlSW5ub2RiRGVhZGxvY2tTdW1tYXJ5KHN0YXR1cykge1xuICBjb25zdCB7Y2FuZGlkYXRlLCBzZWN0aW9uVHJ1bmNhdGVkfSA9IGJvdW5kZWREZWFkbG9ja1NlY3Rpb24oc3RhdHVzKVxuICAvKiogQHR5cGUge0lubm9kYkRlYWRsb2NrUGFyc2VyU3RhdGV9ICovXG4gIGNvbnN0IHN0YXRlID0ge1xuICAgIGN1cnJlbnRUcmFuc2FjdGlvbjogdW5kZWZpbmVkLFxuICAgIGN1cnJlbnRMb2NrU3RhdGU6IHVuZGVmaW5lZCxcbiAgICBsb2NrUmVjb3JkQ291bnQ6IDAsXG4gICAgbG9ja1JlY29yZHNUcnVuY2F0ZWQ6IGZhbHNlLFxuICAgIHRyYW5zYWN0aW9uTm9kZXM6IFtdLFxuICAgIHRyYW5zYWN0aW9uTm9kZXNUcnVuY2F0ZWQ6IGZhbHNlLFxuICAgIHRyYW5zYWN0aW9uczogMCxcbiAgICB2aWN0aW1UcmFuc2FjdGlvbjogbnVsbFxuICB9XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIGNhbmRpZGF0ZS5zcGxpdCgvXFxyP1xcbi8pKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IGxpbmUuc2xpY2UoMCwgSU5OT0RCX0RFQURMT0NLX0xJTkVfTUFYX0NIQVJTKS50cmltKClcbiAgICBjb25zdCB0cmFuc2FjdGlvbk9yZGluYWwgPSB0cmFuc2FjdGlvbkhlYWRlck9yZGluYWwodHJpbW1lZClcblxuICAgIGlmICh0cmFuc2FjdGlvbk9yZGluYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3RhcnRUcmFuc2FjdGlvbk5vZGUoc3RhdGUsIHRyYW5zYWN0aW9uT3JkaW5hbClcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgbG9ja1N0YXRlTWFya2VyID0gdHJhbnNhY3Rpb25Mb2NrU3RhdGVNYXJrZXIodHJpbW1lZCwgc3RhdGUuY3VycmVudFRyYW5zYWN0aW9uKVxuXG4gICAgaWYgKGxvY2tTdGF0ZU1hcmtlci5tYXRjaGVkKSB7XG4gICAgICBzdGF0ZS5jdXJyZW50TG9ja1N0YXRlID0gbG9ja1N0YXRlTWFya2VyLnN0YXRlXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IHZpY3RpbU9yZGluYWwgPSB2aWN0aW1UcmFuc2FjdGlvbk9yZGluYWwodHJpbW1lZClcblxuICAgIGlmICh2aWN0aW1PcmRpbmFsICE9PSB1bmRlZmluZWQpIHN0YXRlLnZpY3RpbVRyYW5zYWN0aW9uID0gdmljdGltT3JkaW5hbFxuICAgIGFwcGVuZExvY2tOb2RlKHN0YXRlLCB0cmltbWVkKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsb2NrUmVjb3Jkc1RydW5jYXRlZDogc3RhdGUubG9ja1JlY29yZHNUcnVuY2F0ZWQsXG4gICAgc2VjdGlvblRydW5jYXRlZCxcbiAgICB0cmFuc2FjdGlvbk5vZGVzOiBzdGF0ZS50cmFuc2FjdGlvbk5vZGVzLFxuICAgIHRyYW5zYWN0aW9uTm9kZXNUcnVuY2F0ZWQ6IHN0YXRlLnRyYW5zYWN0aW9uTm9kZXNUcnVuY2F0ZWQsXG4gICAgdHJhbnNhY3Rpb25zOiBzdGF0ZS50cmFuc2FjdGlvbnMsXG4gICAgdmljdGltVHJhbnNhY3Rpb246IHN0YXRlLnZpY3RpbVRyYW5zYWN0aW9uXG4gIH1cbn1cblxuLyoqXG4gKiBFeHRyYWN0cyBhbmQgY2FwcyB0aGUgbGF0ZXN0LWRlYWRsb2NrIHNlY3Rpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdHVzIC0gUmF3IHNlcnZlciBzdGF0dXMuXG4gKiBAcmV0dXJucyB7e2NhbmRpZGF0ZTogc3RyaW5nLCBzZWN0aW9uVHJ1bmNhdGVkOiBib29sZWFufX0gLSBCb3VuZGVkIGNhbmRpZGF0ZSBhbmQgdHJ1bmNhdGlvbiBzdGF0ZS5cbiAqL1xuZnVuY3Rpb24gYm91bmRlZERlYWRsb2NrU2VjdGlvbihzdGF0dXMpIHtcbiAgY29uc3Qgc2Nhbm5lZFN0YXR1cyA9IHN0YXR1cy5zbGljZSgwLCBJTk5PREJfU1RBVFVTX1NDQU5fTUFYX0NIQVJTKVxuICBjb25zdCBkZWFkbG9ja1N0YXJ0ID0gc2Nhbm5lZFN0YXR1cy5pbmRleE9mKFwiTEFURVNUIERFVEVDVEVEIERFQURMT0NLXCIpXG4gIGNvbnN0IGF2YWlsYWJsZVNlY3Rpb24gPSBkZWFkbG9ja1N0YXJ0ID49IDAgPyBzY2FubmVkU3RhdHVzLnNsaWNlKGRlYWRsb2NrU3RhcnQpIDogXCJcIlxuICBjb25zdCBib3VuZGVkU2VjdGlvbiA9IGF2YWlsYWJsZVNlY3Rpb24uc2xpY2UoMCwgSU5OT0RCX0RFQURMT0NLX1NFQ1RJT05fTUFYX0NIQVJTKVxuICBjb25zdCBzZWN0aW9uRW5kTWF0Y2ggPSAvXFxuLXsxMCx9XFxyP1xcblRSQU5TQUNUSU9OU1xccj9cXG4tezEwLH0vLmV4ZWMoYm91bmRlZFNlY3Rpb24pXG4gIGNvbnN0IHNjYW5uZWRTdGF0dXNUcnVuY2F0ZWQgPSBzdGF0dXMubGVuZ3RoID4gc2Nhbm5lZFN0YXR1cy5sZW5ndGhcblxuICByZXR1cm4ge1xuICAgIGNhbmRpZGF0ZTogc2VjdGlvbkVuZE1hdGNoID8gYm91bmRlZFNlY3Rpb24uc2xpY2UoMCwgc2VjdGlvbkVuZE1hdGNoLmluZGV4KSA6IGJvdW5kZWRTZWN0aW9uLFxuICAgIHNlY3Rpb25UcnVuY2F0ZWQ6ICFzZWN0aW9uRW5kTWF0Y2ggJiYgZGVhZGxvY2tTdGFydCA+PSAwICYmIChcbiAgICAgIGF2YWlsYWJsZVNlY3Rpb24ubGVuZ3RoID4gYm91bmRlZFNlY3Rpb24ubGVuZ3RoIHx8IHNjYW5uZWRTdGF0dXNUcnVuY2F0ZWRcbiAgICApXG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZml4ZWQtZm9ybWF0IHRyYW5zYWN0aW9uIGhlYWRlciBvcmRpbmFsLlxuICogQHBhcmFtIHtzdHJpbmd9IGxpbmUgLSBCb3VuZGVkIHN0YXR1cyBsaW5lLlxuICogQHJldHVybnMge251bWJlciB8IHVuZGVmaW5lZH0gLSBUcmFuc2FjdGlvbiBvcmRpbmFsLlxuICovXG5mdW5jdGlvbiB0cmFuc2FjdGlvbkhlYWRlck9yZGluYWwobGluZSkge1xuICBjb25zdCBtYXRjaCA9IC9eXFwqXFwqXFwqIFxcKChcXGR7MSw2fSlcXCkgVFJBTlNBQ1RJT046JC8uZXhlYyhsaW5lKVxuXG4gIHJldHVybiBtYXRjaCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBTdGFydHMgYSBib3VuZGVkIHRyYW5zYWN0aW9uIG5vZGUuXG4gKiBAcGFyYW0ge0lubm9kYkRlYWRsb2NrUGFyc2VyU3RhdGV9IHN0YXRlIC0gUGFyc2VyIHN0YXRlLlxuICogQHBhcmFtIHtudW1iZXJ9IG9yZGluYWwgLSBUcmFuc2FjdGlvbiBvcmRpbmFsLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHN0YXJ0VHJhbnNhY3Rpb25Ob2RlKHN0YXRlLCBvcmRpbmFsKSB7XG4gIHN0YXRlLnRyYW5zYWN0aW9ucysrXG4gIHN0YXRlLmN1cnJlbnRMb2NrU3RhdGUgPSB1bmRlZmluZWRcblxuICBpZiAoc3RhdGUudHJhbnNhY3Rpb25Ob2Rlcy5sZW5ndGggPj0gSU5OT0RCX0RFQURMT0NLX1RSQU5TQUNUSU9OX01BWCkge1xuICAgIHN0YXRlLmN1cnJlbnRUcmFuc2FjdGlvbiA9IHVuZGVmaW5lZFxuICAgIHN0YXRlLnRyYW5zYWN0aW9uTm9kZXNUcnVuY2F0ZWQgPSB0cnVlXG4gICAgcmV0dXJuXG4gIH1cblxuICBzdGF0ZS5jdXJyZW50VHJhbnNhY3Rpb24gPSB7Y29uZmxpY3RpbmdMb2NrczogW10sIGxvY2tzOiBbXSwgb3JkaW5hbH1cbiAgc3RhdGUudHJhbnNhY3Rpb25Ob2Rlcy5wdXNoKHN0YXRlLmN1cnJlbnRUcmFuc2FjdGlvbilcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBmaXhlZC1mb3JtYXQgaGVsZC93YWl0aW5nIG1hcmtlciBmb3IgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gbGluZSAtIEJvdW5kZWQgc3RhdHVzIGxpbmUuXG4gKiBAcGFyYW0ge0lubm9kYkRlYWRsb2NrVHJhbnNhY3Rpb25Ob2RlIHwgdW5kZWZpbmVkfSBjdXJyZW50VHJhbnNhY3Rpb24gLSBDdXJyZW50IHRyYW5zYWN0aW9uLlxuICogQHJldHVybnMge3ttYXRjaGVkOiBib29sZWFuLCBzdGF0ZTogXCJjb25mbGljdGluZ1wiIHwgXCJoZWxkXCIgfCBcIndhaXRpbmdcIiB8IHVuZGVmaW5lZH19IC0gTWFya2VyIHJlc3VsdC5cbiAqL1xuZnVuY3Rpb24gdHJhbnNhY3Rpb25Mb2NrU3RhdGVNYXJrZXIobGluZSwgY3VycmVudFRyYW5zYWN0aW9uKSB7XG4gIGNvbnN0IG51bWJlcmVkTWF0Y2ggPSAvXlxcKlxcKlxcKiBcXCgoXFxkezEsNn0pXFwpIChIT0xEUyBUSEUgTE9DS1xcKFNcXCl8V0FJVElORyBGT1IgVEhJUyBMT0NLIFRPIEJFIEdSQU5URUQpOiQvLmV4ZWMobGluZSlcblxuICBpZiAobnVtYmVyZWRNYXRjaCkge1xuICAgIGlmICghY3VycmVudFRyYW5zYWN0aW9uIHx8IGN1cnJlbnRUcmFuc2FjdGlvbi5vcmRpbmFsICE9IE51bWJlcihudW1iZXJlZE1hdGNoWzFdKSkgcmV0dXJuIHttYXRjaGVkOiB0cnVlLCBzdGF0ZTogdW5kZWZpbmVkfVxuXG4gICAgcmV0dXJuIHttYXRjaGVkOiB0cnVlLCBzdGF0ZTogbnVtYmVyZWRNYXRjaFsyXSA9PSBcIkhPTERTIFRIRSBMT0NLKFMpXCIgPyBcImhlbGRcIiA6IFwid2FpdGluZ1wifVxuICB9XG5cbiAgY29uc3QgdW5udW1iZXJlZE1hdGNoID0gL15cXCpcXCpcXCogKFdBSVRJTkcgRk9SIFRISVMgTE9DSyBUTyBCRSBHUkFOVEVEfENPTkZMSUNUSU5HIFdJVEgpOiQvLmV4ZWMobGluZSlcblxuICBpZiAoIXVubnVtYmVyZWRNYXRjaCkgcmV0dXJuIHttYXRjaGVkOiBmYWxzZSwgc3RhdGU6IHVuZGVmaW5lZH1cbiAgaWYgKCFjdXJyZW50VHJhbnNhY3Rpb24pIHJldHVybiB7bWF0Y2hlZDogdHJ1ZSwgc3RhdGU6IHVuZGVmaW5lZH1cblxuICByZXR1cm4ge21hdGNoZWQ6IHRydWUsIHN0YXRlOiB1bm51bWJlcmVkTWF0Y2hbMV0gPT0gXCJDT05GTElDVElORyBXSVRIXCIgPyBcImNvbmZsaWN0aW5nXCIgOiBcIndhaXRpbmdcIn1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZml4ZWQtZm9ybWF0IHZpY3RpbSBvcmRpbmFsLlxuICogQHBhcmFtIHtzdHJpbmd9IGxpbmUgLSBCb3VuZGVkIHN0YXR1cyBsaW5lLlxuICogQHJldHVybnMge251bWJlciB8IHVuZGVmaW5lZH0gLSBWaWN0aW0gb3JkaW5hbC5cbiAqL1xuZnVuY3Rpb24gdmljdGltVHJhbnNhY3Rpb25PcmRpbmFsKGxpbmUpIHtcbiAgY29uc3QgbWF0Y2ggPSAvXlxcKlxcKlxcKiBXRSBST0xMIEJBQ0sgVFJBTlNBQ1RJT04gXFwoKFxcZHsxLDZ9KVxcKSQvLmV4ZWMobGluZSlcblxuICByZXR1cm4gbWF0Y2ggPyBOdW1iZXIobWF0Y2hbMV0pIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQXBwZW5kcyBvbmUgYm91bmRlZCwgZml4ZWQtZm9ybWF0IGxvY2sgbm9kZSB3aGVuIHRoZSBsaW5lIGlzIGVsaWdpYmxlLlxuICogQHBhcmFtIHtJbm5vZGJEZWFkbG9ja1BhcnNlclN0YXRlfSBzdGF0ZSAtIFBhcnNlciBzdGF0ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBsaW5lIC0gQm91bmRlZCBzdGF0dXMgbGluZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBhcHBlbmRMb2NrTm9kZShzdGF0ZSwgbGluZSkge1xuICBpZiAoIXN0YXRlLmN1cnJlbnRUcmFuc2FjdGlvbiB8fCAhc3RhdGUuY3VycmVudExvY2tTdGF0ZSB8fCAhbGluZS5zdGFydHNXaXRoKFwiUkVDT1JEIExPQ0tTIFwiKSkgcmV0dXJuXG5cbiAgaWYgKFxuICAgIHN0YXRlLmxvY2tSZWNvcmRDb3VudCA+PSBJTk5PREJfREVBRExPQ0tfTE9DS19SRUNPUkRfTUFYIHx8XG4gICAgc3RhdGUuY3VycmVudFRyYW5zYWN0aW9uLmxvY2tzLmxlbmd0aCArIHN0YXRlLmN1cnJlbnRUcmFuc2FjdGlvbi5jb25mbGljdGluZ0xvY2tzLmxlbmd0aCA+PSBJTk5PREJfREVBRExPQ0tfTE9DS1NfUEVSX1RSQU5TQUNUSU9OX01BWFxuICApIHtcbiAgICBzdGF0ZS5sb2NrUmVjb3Jkc1RydW5jYXRlZCA9IHRydWVcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGxvY2sgPSBkZWFkbG9ja0xvY2tOb2RlKGxpbmUsIHN0YXRlLmN1cnJlbnRMb2NrU3RhdGUpXG5cbiAgaWYgKCFsb2NrKSByZXR1cm5cblxuICBpZiAoc3RhdGUuY3VycmVudExvY2tTdGF0ZSA9PSBcImNvbmZsaWN0aW5nXCIpIHtcbiAgICBzdGF0ZS5jdXJyZW50VHJhbnNhY3Rpb24uY29uZmxpY3RpbmdMb2Nrcy5wdXNoKGxvY2spXG4gIH0gZWxzZSB7XG4gICAgc3RhdGUuY3VycmVudFRyYW5zYWN0aW9uLmxvY2tzLnB1c2gobG9jaylcbiAgfVxuICBzdGF0ZS5sb2NrUmVjb3JkQ291bnQrK1xufVxuXG4vKipcbiAqIFBhcnNlcyBvbmUgZml4ZWQtZm9ybWF0IFJFQ09SRCBMT0NLUyBsaW5lIGludG8gc2FmZSBzdHJ1Y3R1cmFsIGZpZWxkcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBsaW5lIC0gT25lIGJvdW5kZWQgSW5ub0RCIHN0YXR1cyBsaW5lLlxuICogQHBhcmFtIHtcImNvbmZsaWN0aW5nXCIgfCBcImhlbGRcIiB8IFwid2FpdGluZ1wifSBzdGF0ZSAtIExvY2sgcmVsYXRpb25zaGlwIHRvIGl0cyB0cmFuc2FjdGlvbi5cbiAqIEByZXR1cm5zIHtJbm5vZGJEZWFkbG9ja0xvY2tOb2RlIHwgdW5kZWZpbmVkfSAtIFNhZmUgbG9jayBub2RlLlxuICovXG5mdW5jdGlvbiBkZWFkbG9ja0xvY2tOb2RlKGxpbmUsIHN0YXRlKSB7XG4gIGNvbnN0IGlkZW50aWZpZXIgPSBcIig/OmAoPzpgYHxbXmBcXFxcclxcXFxuXSl7MSwxMjh9YHxbQS1aYS16MC05XyQtXXsxLDEyOH0pXCJcbiAgY29uc3QgdGFibGVJZGVudGlmaWVyID0gYCg/OiR7aWRlbnRpZmllcn1cXFxcLik/JHtpZGVudGlmaWVyfWBcbiAgY29uc3QgbG9ja01hdGNoID0gbmV3IFJlZ0V4cChgXlJFQ09SRCBMT0NLUyAuezEsNTEyfT8gaW5kZXggKCR7aWRlbnRpZmllcn0pIG9mIHRhYmxlICgke3RhYmxlSWRlbnRpZmllcn0pIHRyeCBpZCBcXFxcU3sxLDY0fSg/OiBcXFxcU3sxLDY0fSk/IGxvY2tfbW9kZSAoWHxTfElYfElTfEFVVE9fSU5DKSg/OlxcXFxzfCQpYCkuZXhlYyhsaW5lKVxuXG4gIGlmICghbG9ja01hdGNoKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIHtcbiAgICBpbmRleEZpbmdlcnByaW50OiBgc2hhMjU2OiR7c2hhMjU2SGV4KGBpbm5vZGItaW5kZXg6djFcXDAke2xvY2tNYXRjaFsxXX1gKX1gLFxuICAgIGxvY2tNb2RlOiBsb2NrTWF0Y2hbM10sXG4gICAgc3RhdGUsXG4gICAgdGFibGVGaW5nZXJwcmludDogYHNoYTI1Njoke3NoYTI1NkhleChgaW5ub2RiLXRhYmxlOnYxXFwwJHtsb2NrTWF0Y2hbMl19YCl9YFxuICB9XG59XG4iXX0=
|
|
@@ -165,9 +165,10 @@ export default class VelociousDatabaseDriversMysql extends Base {
|
|
|
165
165
|
* Adds a redacted, bounded excerpt from MySQL's latest InnoDB deadlock report. Capture uses a
|
|
166
166
|
* separate short-lived connection so it cannot queue ahead of rollback or the next retry on this
|
|
167
167
|
* driver's single-connection pool.
|
|
168
|
+
* @param {import("../base.js").DeadlockRetryDiagnosticSnapshot} snapshot - Immutable retry snapshot.
|
|
168
169
|
* @returns {Promise<Record<string, ReturnType<typeof JSON.parse>>>} - Safe diagnostic context.
|
|
169
170
|
*/
|
|
170
|
-
_deadlockDiagnosticContext(): Promise<Record<string, ReturnType<typeof JSON.parse>>>;
|
|
171
|
+
_deadlockDiagnosticContext(snapshot: import("../base.js").DeadlockRetryDiagnosticSnapshot): Promise<Record<string, ReturnType<typeof JSON.parse>>>;
|
|
171
172
|
/**
|
|
172
173
|
* Captures SHOW ENGINE INNODB STATUS on a bounded throwaway connection.
|
|
173
174
|
* @returns {Promise<string>} - Raw server status, retained only inside the redaction path.
|
|
@@ -177,9 +178,27 @@ export default class VelociousDatabaseDriversMysql extends Base {
|
|
|
177
178
|
* Extracts only fixed-format deadlock counters. The server report contains raw SQL, identifiers,
|
|
178
179
|
* and physical record data, so no source text is ever included in an application diagnostic.
|
|
179
180
|
* @param {string} status - SHOW ENGINE INNODB STATUS text.
|
|
180
|
-
* @returns {{transactions: number, victimTransaction: number | null}} - Structural deadlock summary.
|
|
181
|
+
* @returns {{lockRecordsTruncated: boolean, sectionTruncated: boolean, transactionNodes: Array<{conflictingLocks: Array<{indexFingerprint: string, lockMode: string, state: string, tableFingerprint: string}>, locks: Array<{indexFingerprint: string, lockMode: string, state: string, tableFingerprint: string}>, ordinal: number}>, transactionNodesTruncated: boolean, transactions: number, victimTransaction: number | null}} - Structural deadlock summary.
|
|
181
182
|
*/
|
|
182
183
|
_innodbDeadlockSummary(status: string): {
|
|
184
|
+
lockRecordsTruncated: boolean;
|
|
185
|
+
sectionTruncated: boolean;
|
|
186
|
+
transactionNodes: Array<{
|
|
187
|
+
conflictingLocks: Array<{
|
|
188
|
+
indexFingerprint: string;
|
|
189
|
+
lockMode: string;
|
|
190
|
+
state: string;
|
|
191
|
+
tableFingerprint: string;
|
|
192
|
+
}>;
|
|
193
|
+
locks: Array<{
|
|
194
|
+
indexFingerprint: string;
|
|
195
|
+
lockMode: string;
|
|
196
|
+
state: string;
|
|
197
|
+
tableFingerprint: string;
|
|
198
|
+
}>;
|
|
199
|
+
ordinal: number;
|
|
200
|
+
}>;
|
|
201
|
+
transactionNodesTruncated: boolean;
|
|
183
202
|
transactions: number;
|
|
184
203
|
victimTransaction: number | null;
|
|
185
204
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/mysql/index.js"],"names":[],"mappings":"AAGA,OAAO,IAAI,MAAM,YAAY,CAAA;AAS7B,OAAO,OAAO,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/mysql/index.js"],"names":[],"mappings":"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"}
|