@memberjunction/core-entities-server 5.40.0 → 5.40.2
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJDuplicateRunEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJDuplicateRunEntityServer.server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAA0B,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"MJDuplicateRunEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJDuplicateRunEntityServer.server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAA0B,MAAM,+BAA+B,CAAC;AA4C7F,qBACa,0BAA2B,SAAQ,oBAAoB;IACnD,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAuBrC;;;OAGG;YACW,iBAAiB;IAmE/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;;;OAIG;IACH;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,2BAA2B;CA8BtC"}
|
|
@@ -9,6 +9,33 @@ import { RegisterClass, GetGlobalObjectStore } from "@memberjunction/global";
|
|
|
9
9
|
import { MJDuplicateRunEntity } from "@memberjunction/core-entities";
|
|
10
10
|
import { DuplicateRecordDetector } from "@memberjunction/ai-vector-dupe";
|
|
11
11
|
const PIPELINE_PROGRESS_TOPIC = 'PIPELINE_PROGRESS';
|
|
12
|
+
/**
|
|
13
|
+
* Key under which we stash the "detection in flight" set in the MJ global object
|
|
14
|
+
* store. Using the global store (rather than a plain module-level variable) keeps
|
|
15
|
+
* this a true process-singleton even if this module is bundled into more than one
|
|
16
|
+
* execution path — matching the BaseSingleton rationale in the repo guidelines.
|
|
17
|
+
*/
|
|
18
|
+
const DETECTION_IN_FLIGHT_KEY = '___MJDuplicateRunDetectionInFlight';
|
|
19
|
+
/**
|
|
20
|
+
* Returns the process-global set of Duplicate Run IDs that currently have a
|
|
21
|
+
* detection pass in flight.
|
|
22
|
+
*
|
|
23
|
+
* WHY THIS EXISTS: {@link MJDuplicateRunEntityServer.runDetectionAsync} drives
|
|
24
|
+
* `DuplicateRecordDetector.GetDuplicateRecords()`, which legitimately re-saves the
|
|
25
|
+
* SAME run record many times mid-run (total-count update, per-batch resume cursor,
|
|
26
|
+
* completion). Every one of those saves re-enters `Save()`, and while `EndedAt` is
|
|
27
|
+
* still null each previously kicked off ANOTHER detection pass — an exponential
|
|
28
|
+
* fan-out that produced thousands of duplicate Duplicate Run Detail rows and
|
|
29
|
+
* eventually failed the run. Guarding on the run ID makes detection fire exactly
|
|
30
|
+
* once per run.
|
|
31
|
+
*/
|
|
32
|
+
function detectionInFlightSet() {
|
|
33
|
+
const store = GetGlobalObjectStore();
|
|
34
|
+
if (!store[DETECTION_IN_FLIGHT_KEY]) {
|
|
35
|
+
store[DETECTION_IN_FLIGHT_KEY] = new Set();
|
|
36
|
+
}
|
|
37
|
+
return store[DETECTION_IN_FLIGHT_KEY];
|
|
38
|
+
}
|
|
12
39
|
/** Map DuplicateDetectionProgress phases to pipeline stage names */
|
|
13
40
|
const PHASE_TO_STAGE = {
|
|
14
41
|
'Loading': 'extract',
|
|
@@ -21,10 +48,20 @@ const PHASE_TO_STAGE = {
|
|
|
21
48
|
let MJDuplicateRunEntityServer = class MJDuplicateRunEntityServer extends MJDuplicateRunEntity {
|
|
22
49
|
async Save() {
|
|
23
50
|
const saveResult = await super.Save();
|
|
24
|
-
|
|
51
|
+
// Only kick off detection on the INITIAL save of an unfinished run, and never
|
|
52
|
+
// while a detection pass for this run is already in flight. The detector saves
|
|
53
|
+
// this record repeatedly mid-run (progress + resume cursor) — without this guard
|
|
54
|
+
// each of those saves would spawn another detection pass. See detectionInFlightSet().
|
|
55
|
+
const inFlight = detectionInFlightSet();
|
|
56
|
+
if (saveResult && this.EndedAt === null && !inFlight.has(this.ID)) {
|
|
57
|
+
inFlight.add(this.ID);
|
|
25
58
|
// Fire-and-forget: run detection asynchronously so the save returns immediately
|
|
26
|
-
this.runDetectionAsync()
|
|
59
|
+
this.runDetectionAsync()
|
|
60
|
+
.catch((error) => {
|
|
27
61
|
LogError(`Async duplicate detection failed for run ${this.ID}`, undefined, error);
|
|
62
|
+
})
|
|
63
|
+
.finally(() => {
|
|
64
|
+
inFlight.delete(this.ID);
|
|
28
65
|
});
|
|
29
66
|
}
|
|
30
67
|
return saveResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MJDuplicateRunEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJDuplicateRunEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAyD,QAAQ,EAAE,SAAS,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAClK,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAA0B,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AAEpD,oEAAoE;AACpE,MAAM,cAAc,GAAwD;IACxE,SAAS,EAAE,SAAS;IACpB,aAAa,EAAE,WAAW;IAC1B,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,UAAU;CACxB,CAAC;AAGK,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,oBAAoB;IACzD,KAAK,CAAC,IAAI;QACb,MAAM,UAAU,GAAY,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAE/C,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"MJDuplicateRunEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJDuplicateRunEntityServer.server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/core-entities-server",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.40.
|
|
4
|
+
"version": "5.40.2",
|
|
5
5
|
"description": "Entity subclasses for the metadata layer of MemberJunction that are only used on server side applications like MJAPI, distributed as part of each release of MemberJunction",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -21,29 +21,29 @@
|
|
|
21
21
|
"typescript": "^5.9.3"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@memberjunction/actions-base": "5.40.
|
|
25
|
-
"@memberjunction/ai": "5.40.
|
|
26
|
-
"@memberjunction/ai-core-plus": "5.40.
|
|
27
|
-
"@memberjunction/ai-engine-base": "5.40.
|
|
28
|
-
"@memberjunction/ai-prompts": "5.40.
|
|
29
|
-
"@memberjunction/ai-provider-bundle": "5.40.
|
|
30
|
-
"@memberjunction/ai-vector-dupe": "5.40.
|
|
31
|
-
"@memberjunction/ai-vectordb": "5.40.
|
|
32
|
-
"@memberjunction/ai-vectors-memory": "5.40.
|
|
33
|
-
"@memberjunction/aiengine": "5.40.
|
|
34
|
-
"@memberjunction/core": "5.40.
|
|
35
|
-
"@memberjunction/core-entities": "5.40.
|
|
36
|
-
"@memberjunction/doc-utils": "5.40.
|
|
37
|
-
"@memberjunction/generic-database-provider": "5.40.
|
|
38
|
-
"@memberjunction/global": "5.40.
|
|
39
|
-
"@memberjunction/integration-engine": "5.40.
|
|
40
|
-
"@memberjunction/integration-pk-classifier": "5.40.
|
|
41
|
-
"@memberjunction/skip-types": "5.40.
|
|
42
|
-
"@memberjunction/sql-converter": "5.40.
|
|
43
|
-
"@memberjunction/sql-dialect": "5.40.
|
|
44
|
-
"@memberjunction/sql-parser": "5.40.
|
|
45
|
-
"@memberjunction/sqlserver-dataprovider": "5.40.
|
|
46
|
-
"@memberjunction/tag-engine": "5.40.
|
|
24
|
+
"@memberjunction/actions-base": "5.40.2",
|
|
25
|
+
"@memberjunction/ai": "5.40.2",
|
|
26
|
+
"@memberjunction/ai-core-plus": "5.40.2",
|
|
27
|
+
"@memberjunction/ai-engine-base": "5.40.2",
|
|
28
|
+
"@memberjunction/ai-prompts": "5.40.2",
|
|
29
|
+
"@memberjunction/ai-provider-bundle": "5.40.2",
|
|
30
|
+
"@memberjunction/ai-vector-dupe": "5.40.2",
|
|
31
|
+
"@memberjunction/ai-vectordb": "5.40.2",
|
|
32
|
+
"@memberjunction/ai-vectors-memory": "5.40.2",
|
|
33
|
+
"@memberjunction/aiengine": "5.40.2",
|
|
34
|
+
"@memberjunction/core": "5.40.2",
|
|
35
|
+
"@memberjunction/core-entities": "5.40.2",
|
|
36
|
+
"@memberjunction/doc-utils": "5.40.2",
|
|
37
|
+
"@memberjunction/generic-database-provider": "5.40.2",
|
|
38
|
+
"@memberjunction/global": "5.40.2",
|
|
39
|
+
"@memberjunction/integration-engine": "5.40.2",
|
|
40
|
+
"@memberjunction/integration-pk-classifier": "5.40.2",
|
|
41
|
+
"@memberjunction/skip-types": "5.40.2",
|
|
42
|
+
"@memberjunction/sql-converter": "5.40.2",
|
|
43
|
+
"@memberjunction/sql-dialect": "5.40.2",
|
|
44
|
+
"@memberjunction/sql-parser": "5.40.2",
|
|
45
|
+
"@memberjunction/sqlserver-dataprovider": "5.40.2",
|
|
46
|
+
"@memberjunction/tag-engine": "5.40.2",
|
|
47
47
|
"nunjucks": "3.2.4",
|
|
48
48
|
"rxjs": "~7.8.1",
|
|
49
49
|
"zod": "~3.24.4"
|