@memberjunction/core-actions 5.31.0 → 5.33.0
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.
|
@@ -14,9 +14,11 @@ import { BaseAction } from '@memberjunction/actions';
|
|
|
14
14
|
* - **BatchSize** (default 10) — Number of records to geocode **concurrently**
|
|
15
15
|
* in each parallel batch. Controls API rate pressure. Google Geocoding API
|
|
16
16
|
* allows 50 QPS, so 10 is conservative and leaves headroom.
|
|
17
|
-
* - **MaxTotalRecords** (default
|
|
18
|
-
*
|
|
19
|
-
*
|
|
17
|
+
* - **MaxTotalRecords** (default 50,000) — Safety cap on the total number of
|
|
18
|
+
* records processed in a single run. Prevents unbounded memory growth in
|
|
19
|
+
* extreme cases. Override via scheduled job parameters. Logs a warning when
|
|
20
|
+
* the limit is reached so operators know remaining records exist for the
|
|
21
|
+
* next run.
|
|
20
22
|
* - **MaxRetries** (default 5) — Maximum retry count for failed geocoding
|
|
21
23
|
* attempts before a record is considered permanently failed.
|
|
22
24
|
*
|
|
@@ -32,6 +34,10 @@ import { BaseAction } from '@memberjunction/actions';
|
|
|
32
34
|
export declare class ScheduledGeocodingAction extends BaseAction {
|
|
33
35
|
private static readonly DEFAULT_MAX_RETRIES;
|
|
34
36
|
private static readonly DEFAULT_BATCH_SIZE;
|
|
37
|
+
/** Safety default: cap total records per run to prevent unbounded memory growth in extreme cases. */
|
|
38
|
+
private static readonly DEFAULT_MAX_TOTAL;
|
|
39
|
+
/** Page size for RunView pagination — controls how many BaseEntity objects exist simultaneously. */
|
|
40
|
+
private static readonly PAGE_SIZE;
|
|
35
41
|
protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
36
42
|
/**
|
|
37
43
|
* Find records in geo-enabled entities that have no RecordGeoCode row
|
|
@@ -40,21 +46,27 @@ export declare class ScheduledGeocodingAction extends BaseAction {
|
|
|
40
46
|
*/
|
|
41
47
|
private processMissingRecords;
|
|
42
48
|
/**
|
|
43
|
-
* Process all missing RecordGeoCode rows for a single entity.
|
|
44
|
-
* Loads all entity records with non-null geo fields, filters out those
|
|
45
|
-
* that already have a RecordGeoCode row, then geocodes the rest in
|
|
46
|
-
* parallel batches.
|
|
49
|
+
* Process all missing RecordGeoCode rows for a single entity using pagination.
|
|
47
50
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
51
|
+
* Instead of loading ALL entity records into memory at once (which causes OOM
|
|
52
|
+
* with 50k+ records), this fetches pages of PAGE_SIZE records, processes each
|
|
53
|
+
* page, then releases references so previous pages can be GC'd.
|
|
54
|
+
*
|
|
55
|
+
* Also loads all existing RecordGeoCode rows for this entity into a lightweight
|
|
56
|
+
* Map upfront (ExistingGeoCodeInfo — ~5 small fields per row, ~15MB for 50k rows)
|
|
57
|
+
* to eliminate the N+1 per-record FindExistingGeoCode SQL query.
|
|
52
58
|
*/
|
|
53
59
|
private processMissingForEntity;
|
|
54
60
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
61
|
+
* Load a single page of entity records with non-null geo fields.
|
|
62
|
+
* Uses OrderBy on PK + MaxRows + offset simulation via GreaterThan filter
|
|
63
|
+
* to paginate without loading the full result set.
|
|
64
|
+
*/
|
|
65
|
+
private loadEntityPage;
|
|
66
|
+
/**
|
|
67
|
+
* Retry failed geocoding attempts using pagination.
|
|
68
|
+
* Loads pages of failed RecordGeoCode rows, then loads source entity records
|
|
69
|
+
* and re-runs GeoCodeSyncService. Processes up to maxTotal records.
|
|
58
70
|
*/
|
|
59
71
|
private processFailedRetries;
|
|
60
72
|
/**
|
|
@@ -64,9 +76,16 @@ export declare class ScheduledGeocodingAction extends BaseAction {
|
|
|
64
76
|
private loadSourceEntities;
|
|
65
77
|
/**
|
|
66
78
|
* Remove RecordGeoCode rows whose source entity record no longer exists.
|
|
67
|
-
* Processes one entity at a time
|
|
79
|
+
* Processes one entity at a time, paginating orphan queries to avoid loading
|
|
80
|
+
* all orphan rows into memory simultaneously.
|
|
68
81
|
*/
|
|
69
82
|
private cleanupOrphanedRecords;
|
|
83
|
+
/**
|
|
84
|
+
* Paginated orphan cleanup for a single entity. Fetches pages of orphan rows,
|
|
85
|
+
* deletes them, then fetches the next page. Since deleted rows disappear from
|
|
86
|
+
* subsequent queries, we always fetch from offset 0.
|
|
87
|
+
*/
|
|
88
|
+
private cleanupOrphansForEntity;
|
|
70
89
|
/**
|
|
71
90
|
* Geocode a list of entity records in parallel batches, then fire cache
|
|
72
91
|
* invalidation events for each successfully geocoded record.
|
|
@@ -81,6 +100,7 @@ export declare class ScheduledGeocodingAction extends BaseAction {
|
|
|
81
100
|
* @param entityInfo - Entity metadata
|
|
82
101
|
* @param contextUser - User context
|
|
83
102
|
* @param batchSize - Number of concurrent geocoding operations per batch
|
|
103
|
+
* @param existingGeoCodesMap - Optional pre-loaded map passed to GeoCodeSyncService
|
|
84
104
|
*/
|
|
85
105
|
private geocodeBatch;
|
|
86
106
|
/**
|
|
@@ -115,9 +135,16 @@ export declare class ScheduledGeocodingAction extends BaseAction {
|
|
|
115
135
|
*/
|
|
116
136
|
private getGeoAddressFields;
|
|
117
137
|
/**
|
|
118
|
-
*
|
|
138
|
+
* Load all existing RecordGeoCode rows for an entity into a lightweight Map.
|
|
139
|
+
* Keyed by `RecordID|LocationType` for O(1) lookup.
|
|
140
|
+
*
|
|
141
|
+
* This replaces both the old getExistingGeoCodeRecordIds() Set (for filtering
|
|
142
|
+
* missing records) and the per-record FindExistingGeoCode() SQL query in
|
|
143
|
+
* GeoCodeSyncService (for staleness checking). The map holds ~5 small string
|
|
144
|
+
* fields per row — even 50k rows is only ~15MB, safe to hold in memory for
|
|
145
|
+
* the duration of one entity's processing.
|
|
119
146
|
*/
|
|
120
|
-
private
|
|
147
|
+
private loadExistingGeoCodesMap;
|
|
121
148
|
/**
|
|
122
149
|
* Build a RecordID string from an entity's primary key, matching the
|
|
123
150
|
* format used in the view's LEFT JOIN to RecordGeoCode.
|
|
@@ -127,9 +154,5 @@ export declare class ScheduledGeocodingAction extends BaseAction {
|
|
|
127
154
|
* Extract a numeric parameter with a default value.
|
|
128
155
|
*/
|
|
129
156
|
private getNumericParam;
|
|
130
|
-
/**
|
|
131
|
-
* Extract an optional numeric parameter. Returns null if not provided.
|
|
132
|
-
*/
|
|
133
|
-
private getNullableNumericParam;
|
|
134
157
|
}
|
|
135
158
|
//# sourceMappingURL=scheduled-geocoding.action.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduled-geocoding.action.d.ts","sourceRoot":"","sources":["../../../src/custom/geo/scheduled-geocoding.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"scheduled-geocoding.action.d.ts","sourceRoot":"","sources":["../../../src/custom/geo/scheduled-geocoding.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAUrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBACa,wBAAyB,SAAQ,UAAU;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAK;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAM;IAChD,qGAAqG;IACrG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IACnD,oGAAoG;IACpG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAO;cAExB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA8CvF;;;;OAIG;YACW,qBAAqB;IA2BnC;;;;;;;;;;OAUG;YACW,uBAAuB;IA+DrC;;;;OAIG;YACW,cAAc;IA2B5B;;;;OAIG;YACW,oBAAoB;IAkElC;;;OAGG;YACW,kBAAkB;IA6BhC;;;;OAIG;YACW,sBAAsB;IAgDpC;;;;OAIG;YACW,uBAAuB;IAmDrC;;;;;;;;;;;;;;;OAeG;YACW,YAAY;IA2B1B;;;;;;;;;;OAUG;YACW,oBAAoB;IA2BlC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;;;;;;OASG;YACW,uBAAuB;IAoCrC;;;OAGG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,eAAe;CAO1B"}
|
|
@@ -9,6 +9,7 @@ import { BaseAction } from '@memberjunction/actions';
|
|
|
9
9
|
import { RegisterClass, MJGlobal, MJEventType } from '@memberjunction/global';
|
|
10
10
|
import { RunView, Metadata, LogStatus, LogError, CompositeKey, BaseEntity, BaseEntityEvent } from '@memberjunction/core';
|
|
11
11
|
import { GeoCodeSyncService } from '@memberjunction/geo-core';
|
|
12
|
+
import { GetDialect } from '@memberjunction/sql-dialect';
|
|
12
13
|
/**
|
|
13
14
|
* Scheduled geocoding maintenance action that handles three tasks:
|
|
14
15
|
*
|
|
@@ -23,9 +24,11 @@ import { GeoCodeSyncService } from '@memberjunction/geo-core';
|
|
|
23
24
|
* - **BatchSize** (default 10) — Number of records to geocode **concurrently**
|
|
24
25
|
* in each parallel batch. Controls API rate pressure. Google Geocoding API
|
|
25
26
|
* allows 50 QPS, so 10 is conservative and leaves headroom.
|
|
26
|
-
* - **MaxTotalRecords** (default
|
|
27
|
-
*
|
|
28
|
-
*
|
|
27
|
+
* - **MaxTotalRecords** (default 50,000) — Safety cap on the total number of
|
|
28
|
+
* records processed in a single run. Prevents unbounded memory growth in
|
|
29
|
+
* extreme cases. Override via scheduled job parameters. Logs a warning when
|
|
30
|
+
* the limit is reached so operators know remaining records exist for the
|
|
31
|
+
* next run.
|
|
29
32
|
* - **MaxRetries** (default 5) — Maximum retry count for failed geocoding
|
|
30
33
|
* attempts before a record is considered permanently failed.
|
|
31
34
|
*
|
|
@@ -42,6 +45,10 @@ let ScheduledGeocodingAction = class ScheduledGeocodingAction extends BaseAction
|
|
|
42
45
|
static { ScheduledGeocodingAction_1 = this; }
|
|
43
46
|
static { this.DEFAULT_MAX_RETRIES = 5; }
|
|
44
47
|
static { this.DEFAULT_BATCH_SIZE = 10; }
|
|
48
|
+
/** Safety default: cap total records per run to prevent unbounded memory growth in extreme cases. */
|
|
49
|
+
static { this.DEFAULT_MAX_TOTAL = 50_000; }
|
|
50
|
+
/** Page size for RunView pagination — controls how many BaseEntity objects exist simultaneously. */
|
|
51
|
+
static { this.PAGE_SIZE = 500; }
|
|
45
52
|
async InternalRunAction(params) {
|
|
46
53
|
const contextUser = params.ContextUser;
|
|
47
54
|
if (!contextUser) {
|
|
@@ -49,20 +56,24 @@ let ScheduledGeocodingAction = class ScheduledGeocodingAction extends BaseAction
|
|
|
49
56
|
}
|
|
50
57
|
const maxRetries = this.getNumericParam(params, 'MaxRetries', ScheduledGeocodingAction_1.DEFAULT_MAX_RETRIES);
|
|
51
58
|
const batchSize = this.getNumericParam(params, 'BatchSize', ScheduledGeocodingAction_1.DEFAULT_BATCH_SIZE);
|
|
52
|
-
const maxTotal = this.
|
|
53
|
-
LogStatus(`ScheduledGeocodingAction: Starting maintenance run (BatchSize=${batchSize}, MaxTotal=${maxTotal
|
|
59
|
+
const maxTotal = this.getNumericParam(params, 'MaxTotalRecords', ScheduledGeocodingAction_1.DEFAULT_MAX_TOTAL);
|
|
60
|
+
LogStatus(`ScheduledGeocodingAction: Starting maintenance run (BatchSize=${batchSize}, MaxTotal=${maxTotal})`);
|
|
54
61
|
const stats = { MissingProcessed: 0, MissingSuccess: 0, RetriesProcessed: 0, RetriesSuccess: 0, OrphansRemoved: 0 };
|
|
55
62
|
// Step 1: Find and geocode missing records
|
|
56
63
|
const missingStats = await this.processMissingRecords(contextUser, batchSize, maxTotal, params.Provider);
|
|
57
64
|
stats.MissingProcessed = missingStats.Processed;
|
|
58
65
|
stats.MissingSuccess = missingStats.Success;
|
|
59
66
|
// Step 2: Retry failed geocoding attempts
|
|
60
|
-
const retryMaxTotal =
|
|
67
|
+
const retryMaxTotal = Math.max(0, maxTotal - stats.MissingProcessed);
|
|
61
68
|
const retryStats = await this.processFailedRetries(contextUser, maxRetries, batchSize, retryMaxTotal, params.Provider);
|
|
62
69
|
stats.RetriesProcessed = retryStats.Processed;
|
|
63
70
|
stats.RetriesSuccess = retryStats.Success;
|
|
64
71
|
// Step 3: Clean up orphaned RecordGeoCode rows
|
|
65
72
|
stats.OrphansRemoved = await this.cleanupOrphanedRecords(contextUser, batchSize, params.Provider);
|
|
73
|
+
const totalRecordsProcessed = stats.MissingProcessed + stats.RetriesProcessed;
|
|
74
|
+
if (totalRecordsProcessed >= maxTotal) {
|
|
75
|
+
LogStatus(`ScheduledGeocodingAction: WARNING — MaxTotal limit (${maxTotal}) reached. There may be remaining records for the next run.`);
|
|
76
|
+
}
|
|
66
77
|
LogStatus(`ScheduledGeocodingAction: Complete — Missing: ${stats.MissingProcessed} processed (${stats.MissingSuccess} success), Retries: ${stats.RetriesProcessed} (${stats.RetriesSuccess} success), Orphans: ${stats.OrphansRemoved} removed`);
|
|
67
78
|
return {
|
|
68
79
|
Success: true,
|
|
@@ -84,9 +95,9 @@ let ScheduledGeocodingAction = class ScheduledGeocodingAction extends BaseAction
|
|
|
84
95
|
let totalProcessed = 0;
|
|
85
96
|
let totalSuccess = 0;
|
|
86
97
|
for (const entityInfo of geoEntities) {
|
|
87
|
-
if (
|
|
98
|
+
if (totalProcessed >= maxTotal)
|
|
88
99
|
break;
|
|
89
|
-
const remaining = maxTotal
|
|
100
|
+
const remaining = maxTotal - totalProcessed;
|
|
90
101
|
const entityStats = await this.processMissingForEntity(entityInfo, contextUser, batchSize, remaining);
|
|
91
102
|
totalProcessed += entityStats.Processed;
|
|
92
103
|
totalSuccess += entityStats.Success;
|
|
@@ -97,18 +108,17 @@ let ScheduledGeocodingAction = class ScheduledGeocodingAction extends BaseAction
|
|
|
97
108
|
return { Processed: totalProcessed, Success: totalSuccess };
|
|
98
109
|
}
|
|
99
110
|
/**
|
|
100
|
-
* Process all missing RecordGeoCode rows for a single entity.
|
|
101
|
-
* Loads all entity records with non-null geo fields, filters out those
|
|
102
|
-
* that already have a RecordGeoCode row, then geocodes the rest in
|
|
103
|
-
* parallel batches.
|
|
111
|
+
* Process all missing RecordGeoCode rows for a single entity using pagination.
|
|
104
112
|
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
113
|
+
* Instead of loading ALL entity records into memory at once (which causes OOM
|
|
114
|
+
* with 50k+ records), this fetches pages of PAGE_SIZE records, processes each
|
|
115
|
+
* page, then releases references so previous pages can be GC'd.
|
|
116
|
+
*
|
|
117
|
+
* Also loads all existing RecordGeoCode rows for this entity into a lightweight
|
|
118
|
+
* Map upfront (ExistingGeoCodeInfo — ~5 small fields per row, ~15MB for 50k rows)
|
|
119
|
+
* to eliminate the N+1 per-record FindExistingGeoCode SQL query.
|
|
109
120
|
*/
|
|
110
121
|
async processMissingForEntity(entityInfo, contextUser, batchSize, maxRows) {
|
|
111
|
-
const rv = new RunView();
|
|
112
122
|
const pkField = entityInfo.FirstPrimaryKey;
|
|
113
123
|
if (!pkField)
|
|
114
124
|
return { Processed: 0, Success: 0 };
|
|
@@ -116,33 +126,41 @@ let ScheduledGeocodingAction = class ScheduledGeocodingAction extends BaseAction
|
|
|
116
126
|
if (geoFields.length === 0)
|
|
117
127
|
return { Processed: 0, Success: 0 };
|
|
118
128
|
try {
|
|
119
|
-
//
|
|
120
|
-
|
|
121
|
-
//
|
|
129
|
+
// Bulk load: lightweight map of all existing RecordGeoCode rows for this entity.
|
|
130
|
+
// Used both for filtering (which records are missing) and passed through to
|
|
131
|
+
// GeoCodeSyncService to eliminate per-record SQL queries.
|
|
132
|
+
const existingMap = await this.loadExistingGeoCodesMap(entityInfo.ID, contextUser);
|
|
122
133
|
const nonNullConditions = geoFields.map(f => `${f.Name} IS NOT NULL`).join(' OR ');
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
missingRecords
|
|
134
|
+
let totalProcessed = 0;
|
|
135
|
+
let totalSuccess = 0;
|
|
136
|
+
let pageOffset = 0;
|
|
137
|
+
// Paginate through entity records to avoid loading all into memory at once
|
|
138
|
+
while (totalProcessed < maxRows) {
|
|
139
|
+
const pageResult = await this.loadEntityPage(entityInfo.Name, nonNullConditions, pageOffset, contextUser);
|
|
140
|
+
if (!pageResult.Success || pageResult.Results.length === 0)
|
|
141
|
+
break;
|
|
142
|
+
const pageEntities = pageResult.Results;
|
|
143
|
+
// Filter to records missing geocodes (not in existingMap for any LocationType)
|
|
144
|
+
const missingRecords = pageEntities.filter(entity => {
|
|
145
|
+
const recordId = this.buildRecordId(entity);
|
|
146
|
+
// A record is "missing" if it has no existing geocode row at all.
|
|
147
|
+
// Check for 'Primary' since that's the only LocationType currently generated.
|
|
148
|
+
const key = GeoCodeSyncService.BuildGeoCodeMapKey(recordId, 'Primary');
|
|
149
|
+
return !existingMap.has(key);
|
|
150
|
+
});
|
|
151
|
+
if (missingRecords.length > 0) {
|
|
152
|
+
const budget = maxRows - totalProcessed;
|
|
153
|
+
const toProcess = missingRecords.slice(0, budget);
|
|
154
|
+
const stats = await this.geocodeBatch(toProcess, entityInfo, contextUser, batchSize, existingMap);
|
|
155
|
+
totalProcessed += stats.Processed;
|
|
156
|
+
totalSuccess += stats.Success;
|
|
157
|
+
}
|
|
158
|
+
// If this page was smaller than PAGE_SIZE, we've exhausted the entity
|
|
159
|
+
if (pageEntities.length < ScheduledGeocodingAction_1.PAGE_SIZE)
|
|
160
|
+
break;
|
|
161
|
+
pageOffset += ScheduledGeocodingAction_1.PAGE_SIZE;
|
|
141
162
|
}
|
|
142
|
-
|
|
143
|
-
return { Processed: 0, Success: 0 };
|
|
144
|
-
// Geocode in parallel batches
|
|
145
|
-
return await this.geocodeBatch(missingRecords, entityInfo, contextUser, batchSize);
|
|
163
|
+
return { Processed: totalProcessed, Success: totalSuccess };
|
|
146
164
|
}
|
|
147
165
|
catch (e) {
|
|
148
166
|
const msg = e instanceof Error ? e.message : String(e);
|
|
@@ -150,56 +168,85 @@ let ScheduledGeocodingAction = class ScheduledGeocodingAction extends BaseAction
|
|
|
150
168
|
return { Processed: 0, Success: 0 };
|
|
151
169
|
}
|
|
152
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Load a single page of entity records with non-null geo fields.
|
|
173
|
+
* Uses OrderBy on PK + MaxRows + offset simulation via GreaterThan filter
|
|
174
|
+
* to paginate without loading the full result set.
|
|
175
|
+
*/
|
|
176
|
+
async loadEntityPage(entityName, nonNullFilter, offset, contextUser) {
|
|
177
|
+
const rv = new RunView();
|
|
178
|
+
const result = await rv.RunView({
|
|
179
|
+
EntityName: entityName,
|
|
180
|
+
ExtraFilter: `(${nonNullFilter})`,
|
|
181
|
+
OrderBy: 'ID',
|
|
182
|
+
MaxRows: ScheduledGeocodingAction_1.PAGE_SIZE,
|
|
183
|
+
StartRow: offset + 1, // RunView StartRow is 1-based
|
|
184
|
+
BypassCache: true,
|
|
185
|
+
ResultType: 'entity_object'
|
|
186
|
+
}, contextUser);
|
|
187
|
+
return {
|
|
188
|
+
Success: result.Success,
|
|
189
|
+
Results: result.Success ? result.Results : []
|
|
190
|
+
};
|
|
191
|
+
}
|
|
153
192
|
// ================================================================
|
|
154
193
|
// Step 2: Retry failed geocoding attempts
|
|
155
194
|
// ================================================================
|
|
156
195
|
/**
|
|
157
|
-
* Retry failed geocoding attempts
|
|
158
|
-
*
|
|
159
|
-
*
|
|
196
|
+
* Retry failed geocoding attempts using pagination.
|
|
197
|
+
* Loads pages of failed RecordGeoCode rows, then loads source entity records
|
|
198
|
+
* and re-runs GeoCodeSyncService. Processes up to maxTotal records.
|
|
160
199
|
*/
|
|
161
200
|
async processFailedRetries(contextUser, maxRetries, batchSize, maxTotal, provider) {
|
|
162
|
-
|
|
163
|
-
const failedResult = await rv.RunView({
|
|
164
|
-
EntityName: 'MJ: Record Geo Codes',
|
|
165
|
-
ExtraFilter: `Status='failed' AND RetryCount < ${maxRetries}`,
|
|
166
|
-
IgnoreMaxRows: true,
|
|
167
|
-
OrderBy: 'RetryCount ASC, GeocodedAt ASC',
|
|
168
|
-
ResultType: 'entity_object'
|
|
169
|
-
}, contextUser);
|
|
170
|
-
if (!failedResult.Success || failedResult.Results.length === 0) {
|
|
201
|
+
if (maxTotal <= 0)
|
|
171
202
|
return { Processed: 0, Success: 0 };
|
|
172
|
-
}
|
|
173
|
-
let records = failedResult.Results;
|
|
174
|
-
if (maxTotal != null) {
|
|
175
|
-
records = records.slice(0, maxTotal);
|
|
176
|
-
}
|
|
177
|
-
LogStatus(`ScheduledGeocodingAction: ${records.length} failed records eligible for retry`);
|
|
178
203
|
const md = (provider ?? new Metadata());
|
|
204
|
+
const rv = new RunView();
|
|
179
205
|
let totalProcessed = 0;
|
|
180
206
|
let totalSuccess = 0;
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
207
|
+
let pageOffset = 0;
|
|
208
|
+
while (totalProcessed < maxTotal) {
|
|
209
|
+
const pageResult = await rv.RunView({
|
|
210
|
+
EntityName: 'MJ: Record Geo Codes',
|
|
211
|
+
ExtraFilter: `Status='failed' AND RetryCount < ${maxRetries}`,
|
|
212
|
+
OrderBy: 'RetryCount ASC, GeocodedAt ASC',
|
|
213
|
+
MaxRows: ScheduledGeocodingAction_1.PAGE_SIZE,
|
|
214
|
+
StartRow: pageOffset + 1,
|
|
215
|
+
BypassCache: true,
|
|
216
|
+
ResultType: 'entity_object'
|
|
217
|
+
}, contextUser);
|
|
218
|
+
if (!pageResult.Success || pageResult.Results.length === 0)
|
|
219
|
+
break;
|
|
220
|
+
const budget = maxTotal - totalProcessed;
|
|
221
|
+
const records = pageResult.Results.slice(0, budget);
|
|
222
|
+
if (totalProcessed === 0) {
|
|
223
|
+
LogStatus(`ScheduledGeocodingAction: Processing failed records for retry`);
|
|
189
224
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
225
|
+
// Group by entity for efficient processing
|
|
226
|
+
const byEntity = new Map();
|
|
227
|
+
for (const geoRecord of records) {
|
|
228
|
+
const key = geoRecord.EntityID;
|
|
229
|
+
let arr = byEntity.get(key);
|
|
230
|
+
if (!arr) {
|
|
231
|
+
arr = [];
|
|
232
|
+
byEntity.set(key, arr);
|
|
233
|
+
}
|
|
234
|
+
arr.push(geoRecord);
|
|
235
|
+
}
|
|
236
|
+
for (const [entityId, geoRecords] of byEntity) {
|
|
237
|
+
const entityInfo = md.EntityByID(entityId);
|
|
238
|
+
if (!entityInfo)
|
|
239
|
+
continue;
|
|
240
|
+
const entities = await this.loadSourceEntities(geoRecords, entityInfo, contextUser, provider);
|
|
241
|
+
if (entities.length === 0)
|
|
242
|
+
continue;
|
|
243
|
+
const stats = await this.geocodeBatch(entities, entityInfo, contextUser, batchSize);
|
|
244
|
+
totalProcessed += stats.Processed;
|
|
245
|
+
totalSuccess += stats.Success;
|
|
246
|
+
}
|
|
247
|
+
if (pageResult.Results.length < ScheduledGeocodingAction_1.PAGE_SIZE)
|
|
248
|
+
break;
|
|
249
|
+
pageOffset += ScheduledGeocodingAction_1.PAGE_SIZE;
|
|
203
250
|
}
|
|
204
251
|
return { Processed: totalProcessed, Success: totalSuccess };
|
|
205
252
|
}
|
|
@@ -230,13 +277,20 @@ let ScheduledGeocodingAction = class ScheduledGeocodingAction extends BaseAction
|
|
|
230
277
|
// ================================================================
|
|
231
278
|
/**
|
|
232
279
|
* Remove RecordGeoCode rows whose source entity record no longer exists.
|
|
233
|
-
* Processes one entity at a time
|
|
280
|
+
* Processes one entity at a time, paginating orphan queries to avoid loading
|
|
281
|
+
* all orphan rows into memory simultaneously.
|
|
234
282
|
*/
|
|
235
283
|
async cleanupOrphanedRecords(contextUser, batchSize, provider) {
|
|
236
284
|
const rv = new RunView();
|
|
237
285
|
const md = (provider ?? new Metadata());
|
|
286
|
+
// Resolve the dialect for the active provider once — the orphan filter
|
|
287
|
+
// is built per-entity but the dialect (SQL Server vs PostgreSQL) is
|
|
288
|
+
// bound to the provider, not the entity, so deriving it here keeps
|
|
289
|
+
// the per-entity loop dialect-agnostic.
|
|
290
|
+
const platformKey = md.PlatformKey ?? 'sqlserver';
|
|
291
|
+
const dialect = GetDialect(platformKey);
|
|
238
292
|
let totalRemoved = 0;
|
|
239
|
-
// Get distinct EntityIDs from RecordGeoCode
|
|
293
|
+
// Get distinct EntityIDs from RecordGeoCode (lightweight — just IDs)
|
|
240
294
|
const entityResult = await rv.RunView({
|
|
241
295
|
EntityName: 'MJ: Record Geo Codes',
|
|
242
296
|
Fields: ['EntityID'],
|
|
@@ -254,22 +308,8 @@ let ScheduledGeocodingAction = class ScheduledGeocodingAction extends BaseAction
|
|
|
254
308
|
const pkField = entityInfo.FirstPrimaryKey;
|
|
255
309
|
if (!pkField)
|
|
256
310
|
continue;
|
|
257
|
-
const
|
|
258
|
-
|
|
259
|
-
ExtraFilter: `EntityID = '${entityId}' AND NOT EXISTS (SELECT 1 FROM ${entityInfo.SchemaName}.${entityInfo.BaseTable} src WHERE CAST(src.${pkField.Name} AS NVARCHAR(450)) = RecordID)`,
|
|
260
|
-
IgnoreMaxRows: true,
|
|
261
|
-
ResultType: 'entity_object'
|
|
262
|
-
}, contextUser);
|
|
263
|
-
if (orphanResult.Success && orphanResult.Results.length > 0) {
|
|
264
|
-
// Delete orphans in parallel batches
|
|
265
|
-
const orphans = orphanResult.Results;
|
|
266
|
-
for (let i = 0; i < orphans.length; i += batchSize) {
|
|
267
|
-
const batch = orphans.slice(i, i + batchSize);
|
|
268
|
-
const results = await Promise.allSettled(batch.map(o => o.Delete()));
|
|
269
|
-
totalRemoved += results.filter(r => r.status === 'fulfilled' && r.value).length;
|
|
270
|
-
}
|
|
271
|
-
LogStatus(`ScheduledGeocodingAction: Removed ${orphanResult.Results.length} orphaned geo records for ${entityInfo.Name}`);
|
|
272
|
-
}
|
|
311
|
+
const entityRemoved = await this.cleanupOrphansForEntity(entityId, entityInfo, pkField.Name, contextUser, batchSize, rv, dialect);
|
|
312
|
+
totalRemoved += entityRemoved;
|
|
273
313
|
}
|
|
274
314
|
catch (e) {
|
|
275
315
|
const msg = e instanceof Error ? e.message : String(e);
|
|
@@ -278,6 +318,45 @@ let ScheduledGeocodingAction = class ScheduledGeocodingAction extends BaseAction
|
|
|
278
318
|
}
|
|
279
319
|
return totalRemoved;
|
|
280
320
|
}
|
|
321
|
+
/**
|
|
322
|
+
* Paginated orphan cleanup for a single entity. Fetches pages of orphan rows,
|
|
323
|
+
* deletes them, then fetches the next page. Since deleted rows disappear from
|
|
324
|
+
* subsequent queries, we always fetch from offset 0.
|
|
325
|
+
*/
|
|
326
|
+
async cleanupOrphansForEntity(entityId, entityInfo, pkFieldName, contextUser, batchSize, rv, dialect) {
|
|
327
|
+
let entityRemoved = 0;
|
|
328
|
+
const sourceRef = dialect.QuoteSchema(entityInfo.SchemaName, entityInfo.BaseView);
|
|
329
|
+
const pkRef = `src.${dialect.QuoteIdentifier(pkFieldName)}`;
|
|
330
|
+
const pkAsString = dialect.CastToBoundedString(pkRef, 450);
|
|
331
|
+
const entityIdLit = dialect.QuoteStringLiteral(entityId);
|
|
332
|
+
const orphanFilter = `EntityID = ${entityIdLit} AND NOT EXISTS (SELECT 1 FROM ${sourceRef} src WHERE ${pkAsString} = RecordID)`;
|
|
333
|
+
// Paginate: fetch a page, delete it, repeat. Since we're deleting rows,
|
|
334
|
+
// always query from the start — deleted rows won't appear again.
|
|
335
|
+
let hasMore = true;
|
|
336
|
+
while (hasMore) {
|
|
337
|
+
const orphanResult = await rv.RunView({
|
|
338
|
+
EntityName: 'MJ: Record Geo Codes',
|
|
339
|
+
ExtraFilter: orphanFilter,
|
|
340
|
+
MaxRows: ScheduledGeocodingAction_1.PAGE_SIZE,
|
|
341
|
+
BypassCache: true,
|
|
342
|
+
ResultType: 'entity_object'
|
|
343
|
+
}, contextUser);
|
|
344
|
+
if (!orphanResult.Success || orphanResult.Results.length === 0)
|
|
345
|
+
break;
|
|
346
|
+
const orphans = orphanResult.Results;
|
|
347
|
+
for (let i = 0; i < orphans.length; i += batchSize) {
|
|
348
|
+
const batch = orphans.slice(i, i + batchSize);
|
|
349
|
+
const results = await Promise.allSettled(batch.map(o => o.Delete()));
|
|
350
|
+
entityRemoved += results.filter(r => r.status === 'fulfilled' && r.value).length;
|
|
351
|
+
}
|
|
352
|
+
// If we got fewer than PAGE_SIZE, we've exhausted the orphans
|
|
353
|
+
hasMore = orphans.length >= ScheduledGeocodingAction_1.PAGE_SIZE;
|
|
354
|
+
}
|
|
355
|
+
if (entityRemoved > 0) {
|
|
356
|
+
LogStatus(`ScheduledGeocodingAction: Removed ${entityRemoved} orphaned geo records for ${entityInfo.Name}`);
|
|
357
|
+
}
|
|
358
|
+
return entityRemoved;
|
|
359
|
+
}
|
|
281
360
|
// ================================================================
|
|
282
361
|
// Core: parallel batch geocoding with cache invalidation
|
|
283
362
|
// ================================================================
|
|
@@ -295,12 +374,13 @@ let ScheduledGeocodingAction = class ScheduledGeocodingAction extends BaseAction
|
|
|
295
374
|
* @param entityInfo - Entity metadata
|
|
296
375
|
* @param contextUser - User context
|
|
297
376
|
* @param batchSize - Number of concurrent geocoding operations per batch
|
|
377
|
+
* @param existingGeoCodesMap - Optional pre-loaded map passed to GeoCodeSyncService
|
|
298
378
|
*/
|
|
299
|
-
async geocodeBatch(entities, entityInfo, contextUser, batchSize) {
|
|
379
|
+
async geocodeBatch(entities, entityInfo, contextUser, batchSize, existingGeoCodesMap) {
|
|
300
380
|
let totalSuccess = 0;
|
|
301
381
|
for (let i = 0; i < entities.length; i += batchSize) {
|
|
302
382
|
const batch = entities.slice(i, i + batchSize);
|
|
303
|
-
const results = await Promise.allSettled(batch.map(entity => this.geocodeAndInvalidate(entity, contextUser)));
|
|
383
|
+
const results = await Promise.allSettled(batch.map(entity => this.geocodeAndInvalidate(entity, contextUser, existingGeoCodesMap)));
|
|
304
384
|
const batchSuccess = results.filter(r => r.status === 'fulfilled' && r.value).length;
|
|
305
385
|
totalSuccess += batchSuccess;
|
|
306
386
|
if (entities.length > batchSize) {
|
|
@@ -320,9 +400,9 @@ let ScheduledGeocodingAction = class ScheduledGeocodingAction extends BaseAction
|
|
|
320
400
|
*
|
|
321
401
|
* @returns true if geocoding succeeded, false otherwise
|
|
322
402
|
*/
|
|
323
|
-
async geocodeAndInvalidate(entity, contextUser) {
|
|
403
|
+
async geocodeAndInvalidate(entity, contextUser, existingGeoCodesMap) {
|
|
324
404
|
try {
|
|
325
|
-
const result = await GeoCodeSyncService.Instance.SyncIfChanged(entity, contextUser);
|
|
405
|
+
const result = await GeoCodeSyncService.Instance.SyncIfChanged(entity, contextUser, undefined, existingGeoCodesMap);
|
|
326
406
|
if (result) {
|
|
327
407
|
// Geocoding produced new coordinates — fire cache invalidation.
|
|
328
408
|
// Reload the entity to pick up fresh data from the view (including
|
|
@@ -380,18 +460,39 @@ let ScheduledGeocodingAction = class ScheduledGeocodingAction extends BaseAction
|
|
|
380
460
|
f.ExtendedType !== 'GeoLatitude' && f.ExtendedType !== 'GeoLongitude');
|
|
381
461
|
}
|
|
382
462
|
/**
|
|
383
|
-
*
|
|
463
|
+
* Load all existing RecordGeoCode rows for an entity into a lightweight Map.
|
|
464
|
+
* Keyed by `RecordID|LocationType` for O(1) lookup.
|
|
465
|
+
*
|
|
466
|
+
* This replaces both the old getExistingGeoCodeRecordIds() Set (for filtering
|
|
467
|
+
* missing records) and the per-record FindExistingGeoCode() SQL query in
|
|
468
|
+
* GeoCodeSyncService (for staleness checking). The map holds ~5 small string
|
|
469
|
+
* fields per row — even 50k rows is only ~15MB, safe to hold in memory for
|
|
470
|
+
* the duration of one entity's processing.
|
|
384
471
|
*/
|
|
385
|
-
async
|
|
472
|
+
async loadExistingGeoCodesMap(entityId, contextUser) {
|
|
386
473
|
const rv = new RunView();
|
|
387
|
-
const
|
|
474
|
+
const result = await rv.RunView({
|
|
388
475
|
EntityName: 'MJ: Record Geo Codes',
|
|
389
476
|
ExtraFilter: `EntityID = '${entityId}'`,
|
|
390
|
-
Fields: ['RecordID'],
|
|
477
|
+
Fields: ['ID', 'RecordID', 'LocationType', 'SourceFieldHash', 'Status'],
|
|
391
478
|
ResultType: 'simple',
|
|
392
|
-
IgnoreMaxRows: true
|
|
479
|
+
IgnoreMaxRows: true,
|
|
480
|
+
BypassCache: true
|
|
393
481
|
}, contextUser);
|
|
394
|
-
|
|
482
|
+
const map = new Map();
|
|
483
|
+
if (result.Success) {
|
|
484
|
+
for (const row of result.Results) {
|
|
485
|
+
const key = GeoCodeSyncService.BuildGeoCodeMapKey(row.RecordID, row.LocationType);
|
|
486
|
+
map.set(key, {
|
|
487
|
+
ID: row.ID,
|
|
488
|
+
RecordID: row.RecordID,
|
|
489
|
+
LocationType: row.LocationType,
|
|
490
|
+
SourceFieldHash: row.SourceFieldHash,
|
|
491
|
+
Status: row.Status
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
return map;
|
|
395
496
|
}
|
|
396
497
|
/**
|
|
397
498
|
* Build a RecordID string from an entity's primary key, matching the
|
|
@@ -413,16 +514,6 @@ let ScheduledGeocodingAction = class ScheduledGeocodingAction extends BaseAction
|
|
|
413
514
|
const parsed = Number(param.Value);
|
|
414
515
|
return isNaN(parsed) ? defaultValue : parsed;
|
|
415
516
|
}
|
|
416
|
-
/**
|
|
417
|
-
* Extract an optional numeric parameter. Returns null if not provided.
|
|
418
|
-
*/
|
|
419
|
-
getNullableNumericParam(params, name) {
|
|
420
|
-
const param = params.Params.find(p => p.Name.trim().toLowerCase() === name.toLowerCase());
|
|
421
|
-
if (!param || param.Value === undefined || param.Value === null)
|
|
422
|
-
return null;
|
|
423
|
-
const parsed = Number(param.Value);
|
|
424
|
-
return isNaN(parsed) ? null : parsed;
|
|
425
|
-
}
|
|
426
517
|
};
|
|
427
518
|
ScheduledGeocodingAction = ScheduledGeocodingAction_1 = __decorate([
|
|
428
519
|
RegisterClass(BaseAction, 'Scheduled Geocoding')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduled-geocoding.action.js","sourceRoot":"","sources":["../../../src/custom/geo/scheduled-geocoding.action.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scheduled-geocoding.action.js","sourceRoot":"","sources":["../../../src/custom/geo/scheduled-geocoding.action.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/core-actions",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.33.0",
|
|
5
5
|
"description": "Library of generated and custom actions for the core MemberJunction framework. This library is maintained by MemberJunction and includes actions for use within the framework itself.",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -25,34 +25,35 @@
|
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@asamuzakjp/css-color": "^4.1.2",
|
|
27
27
|
"@dagrejs/dagre": "^1.1.8",
|
|
28
|
-
"@memberjunction/actions": "5.
|
|
29
|
-
"@memberjunction/actions-base": "5.
|
|
30
|
-
"@memberjunction/ai": "5.
|
|
31
|
-
"@memberjunction/ai-mcp-client": "5.
|
|
32
|
-
"@memberjunction/ai-agent-manager": "5.
|
|
33
|
-
"@memberjunction/ai-agents": "5.
|
|
34
|
-
"@memberjunction/ai-betty-bot": "5.
|
|
35
|
-
"@memberjunction/ai-core-plus": "5.
|
|
36
|
-
"@memberjunction/ai-engine-base": "5.
|
|
37
|
-
"@memberjunction/ai-prompts": "5.
|
|
38
|
-
"@memberjunction/ai-vector-sync": "5.
|
|
39
|
-
"@memberjunction/aiengine": "5.
|
|
40
|
-
"@memberjunction/geo-core": "5.
|
|
41
|
-
"@memberjunction/code-execution": "5.
|
|
42
|
-
"@memberjunction/communication-engine": "5.
|
|
43
|
-
"@memberjunction/communication-types": "5.
|
|
44
|
-
"@memberjunction/content-autotagging": "5.
|
|
45
|
-
"@memberjunction/core": "5.
|
|
46
|
-
"@memberjunction/core-entities": "5.
|
|
47
|
-
"@memberjunction/core-entities-server": "5.
|
|
48
|
-
"@memberjunction/export-engine": "5.
|
|
49
|
-
"@memberjunction/external-change-detection": "5.
|
|
50
|
-
"@memberjunction/generic-database-provider": "5.
|
|
51
|
-
"@memberjunction/global": "5.
|
|
52
|
-
"@memberjunction/integration-engine": "5.
|
|
53
|
-
"@memberjunction/search-engine": "5.
|
|
54
|
-
"@memberjunction/
|
|
55
|
-
"@memberjunction/
|
|
28
|
+
"@memberjunction/actions": "5.33.0",
|
|
29
|
+
"@memberjunction/actions-base": "5.33.0",
|
|
30
|
+
"@memberjunction/ai": "5.33.0",
|
|
31
|
+
"@memberjunction/ai-mcp-client": "5.33.0",
|
|
32
|
+
"@memberjunction/ai-agent-manager": "5.33.0",
|
|
33
|
+
"@memberjunction/ai-agents": "5.33.0",
|
|
34
|
+
"@memberjunction/ai-betty-bot": "5.33.0",
|
|
35
|
+
"@memberjunction/ai-core-plus": "5.33.0",
|
|
36
|
+
"@memberjunction/ai-engine-base": "5.33.0",
|
|
37
|
+
"@memberjunction/ai-prompts": "5.33.0",
|
|
38
|
+
"@memberjunction/ai-vector-sync": "5.33.0",
|
|
39
|
+
"@memberjunction/aiengine": "5.33.0",
|
|
40
|
+
"@memberjunction/geo-core": "5.33.0",
|
|
41
|
+
"@memberjunction/code-execution": "5.33.0",
|
|
42
|
+
"@memberjunction/communication-engine": "5.33.0",
|
|
43
|
+
"@memberjunction/communication-types": "5.33.0",
|
|
44
|
+
"@memberjunction/content-autotagging": "5.33.0",
|
|
45
|
+
"@memberjunction/core": "5.33.0",
|
|
46
|
+
"@memberjunction/core-entities": "5.33.0",
|
|
47
|
+
"@memberjunction/core-entities-server": "5.33.0",
|
|
48
|
+
"@memberjunction/export-engine": "5.33.0",
|
|
49
|
+
"@memberjunction/external-change-detection": "5.33.0",
|
|
50
|
+
"@memberjunction/generic-database-provider": "5.33.0",
|
|
51
|
+
"@memberjunction/global": "5.33.0",
|
|
52
|
+
"@memberjunction/integration-engine": "5.33.0",
|
|
53
|
+
"@memberjunction/search-engine": "5.33.0",
|
|
54
|
+
"@memberjunction/sql-dialect": "5.33.0",
|
|
55
|
+
"@memberjunction/sqlserver-dataprovider": "5.33.0",
|
|
56
|
+
"@memberjunction/storage": "5.33.0",
|
|
56
57
|
"@types/d3-cloud": "^1.2.9",
|
|
57
58
|
"@types/d3-force": "^3.0.10",
|
|
58
59
|
"@types/d3-hierarchy": "^3.1.7",
|