@golemio/pid 3.13.1-dev.1791929583 → 3.13.1-dev.1794220469
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/dist/integration-engine/vehicle-positions/workers/vehicle-positions/constants.d.ts +6 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/constants.js +7 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/constants.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/RefreshPublicStopTimeCacheTask.js +7 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/RefreshPublicStopTimeCacheTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/RefreshPublicTripCacheTask.js +9 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/RefreshPublicTripCacheTask.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1,7 @@
|
|
|
1
1
|
export declare const WORKER_NAME = "VehiclePositions";
|
|
2
|
+
/**
|
|
3
|
+
* The ratio of the lock timeout to the refresh interval.
|
|
4
|
+
* This is used to determine how long to wait before refreshing the lock.
|
|
5
|
+
* The refresh interval checks if the lock is still held and if not, it will reset the lock timeout.
|
|
6
|
+
*/
|
|
7
|
+
export declare const LOCK_REFRESH_INTERVAL_RATIO = 0.65;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WORKER_NAME = void 0;
|
|
3
|
+
exports.LOCK_REFRESH_INTERVAL_RATIO = exports.WORKER_NAME = void 0;
|
|
4
4
|
exports.WORKER_NAME = "VehiclePositions";
|
|
5
|
+
/**
|
|
6
|
+
* The ratio of the lock timeout to the refresh interval.
|
|
7
|
+
* This is used to determine how long to wait before refreshing the lock.
|
|
8
|
+
* The refresh interval checks if the lock is still held and if not, it will reset the lock timeout.
|
|
9
|
+
*/
|
|
10
|
+
exports.LOCK_REFRESH_INTERVAL_RATIO = 0.65;
|
|
5
11
|
//# sourceMappingURL=constants.js.map
|
package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,kBAAkB,CAAC;AAE9C;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,IAAI,CAAC"}
|
|
@@ -38,7 +38,7 @@ let RefreshPublicStopTimeCacheTask = exports.RefreshPublicStopTimeCacheTask = cl
|
|
|
38
38
|
this.queueName = "refreshPublicStopTimeCache";
|
|
39
39
|
this.queueTtl = 10000; // 10s
|
|
40
40
|
this.lockTimeout = config.getValue("old.datasources.pid.vehicle-positions.publicCache.mutexLockStopTimeTimeout", 6000); // default 6s
|
|
41
|
-
this.refreshInterval = this.lockTimeout *
|
|
41
|
+
this.refreshInterval = this.lockTimeout * constants_1.LOCK_REFRESH_INTERVAL_RATIO;
|
|
42
42
|
}
|
|
43
43
|
async execute() {
|
|
44
44
|
const startDateTime = new Date();
|
|
@@ -53,6 +53,8 @@ let RefreshPublicStopTimeCacheTask = exports.RefreshPublicStopTimeCacheTask = cl
|
|
|
53
53
|
if (stopTimes.length === 0) {
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
|
+
let ellapsedTimeInMs = new Date().getTime() - startDateTime.getTime();
|
|
57
|
+
this.logger.info(`${this.constructor.name}: fetched ${stopTimes.length} stop times in ${ellapsedTimeInMs}ms`);
|
|
56
58
|
const data = new Map();
|
|
57
59
|
for (const stopTime of stopTimes) {
|
|
58
60
|
const vehicleId = VehicleIdGenerator_1.VehicleIdGenerator.getVehicleId(stopTime.rt_trip_id, stopTime.gtfs_route_type, stopTime.provider_source_type, stopTime.gtfs_route_short_name, stopTime.cis_trip_number, stopTime.vehicle_registration_number, stopTime.run_number, stopTime.internal_run_number);
|
|
@@ -69,6 +71,10 @@ let RefreshPublicStopTimeCacheTask = exports.RefreshPublicStopTimeCacheTask = cl
|
|
|
69
71
|
stop_id: stopTime.stop_id,
|
|
70
72
|
});
|
|
71
73
|
}
|
|
74
|
+
ellapsedTimeInMs = new Date().getTime() - startDateTime.getTime();
|
|
75
|
+
this.logger.info(`${this.constructor.name}: transformed ${stopTimes.length} stop times to ` +
|
|
76
|
+
`${data.size} keys in ${ellapsedTimeInMs}ms`);
|
|
77
|
+
// this operation can block redis connection, which may cause the mutex lock to expire
|
|
72
78
|
await this.publicStopTimeCacheRepository.createOrUpdate(data, VPUtils_1.VPUtils.DELAY_COMPUTATION_CACHE_TTL);
|
|
73
79
|
}
|
|
74
80
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefreshPublicStopTimeCacheTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/RefreshPublicStopTimeCacheTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oEAA8E;AAC9E,iFAAsG;AAGtG,oGAAiG;AACjG,wEAAqE;AAErE,8EAAqE;AACrE,mEAA2E;AAC3E,2EAAkF;AAClF,6EAA8F;AAC9F,+EAAkE;AAClE,iEAAwE;AACxE,mDAA2D;AAC3D,
|
|
1
|
+
{"version":3,"file":"RefreshPublicStopTimeCacheTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/RefreshPublicStopTimeCacheTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ let RefreshPublicTripCacheTask = exports.RefreshPublicTripCacheTask = class Refr
|
|
|
40
40
|
this.queueName = "refreshPublicTripCache";
|
|
41
41
|
this.queueTtl = 10000; // 10s
|
|
42
42
|
this.lockTimeout = config.getValue("old.datasources.pid.vehicle-positions.publicCache.mutexLockTimeout", 3000); // default 3s
|
|
43
|
-
this.refreshInterval = this.lockTimeout *
|
|
43
|
+
this.refreshInterval = this.lockTimeout * constants_1.LOCK_REFRESH_INTERVAL_RATIO;
|
|
44
44
|
this.tripRepository = new TripsRepository_1.TripsRepository();
|
|
45
45
|
this.redisChannel = new pubsub_1.RedisPubSubChannel(const_1.PUBLIC_CACHE_NAMESPACE_PREFIX);
|
|
46
46
|
}
|
|
@@ -57,11 +57,19 @@ let RefreshPublicTripCacheTask = exports.RefreshPublicTripCacheTask = class Refr
|
|
|
57
57
|
if (trips.length === 0) {
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
|
+
let ellapsedTimeInMs = new Date().getTime() - startDateTime.getTime();
|
|
61
|
+
this.logger.info(`${this.constructor.name}: fetched ${trips.length} trips in ${ellapsedTimeInMs}ms`);
|
|
60
62
|
const { filteredTrips, futureTrips, canceledTrips } = PublicCacheTripsFilter_1.PublicCacheTripsFilter.getDistinctLatestTrips(trips);
|
|
61
63
|
const transformedTrips = this.publicApiTripTransformation.transformArray(filteredTrips);
|
|
62
64
|
const transformedFutureTrips = this.publicApiTripTransformation.transformArray(futureTrips);
|
|
63
65
|
const transformedCanceledTrips = this.publicApiTripTransformation.transformArray(canceledTrips);
|
|
66
|
+
ellapsedTimeInMs = new Date().getTime() - startDateTime.getTime();
|
|
67
|
+
this.logger.info(`${this.constructor.name}: transformed all trips in ${ellapsedTimeInMs}ms`);
|
|
68
|
+
// this operation can block redis connection, which may cause the mutex lock to expire
|
|
64
69
|
const newSetKey = await this.publicApiCacheRepository.geoadd(transformedTrips, transformedFutureTrips, transformedCanceledTrips);
|
|
70
|
+
ellapsedTimeInMs = new Date().getTime() - startDateTime.getTime();
|
|
71
|
+
this.logger.info(`${this.constructor.name}: saved all trips to cache in ${ellapsedTimeInMs}ms`);
|
|
72
|
+
// this operation can block redis connection, which may cause the mutex lock to expire
|
|
65
73
|
await this.redisChannel.publishMessage(newSetKey);
|
|
66
74
|
}
|
|
67
75
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefreshPublicTripCacheTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/RefreshPublicTripCacheTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oEAA8E;AAC9E,2FAAmF;AAEnF,oGAAiG;AACjG,wEAAqE;AAErE,8EAAqE;AACrE,qFAA8F;AAC9F,mEAA2E;AAC3E,2EAAkF;AAClF,6EAA8F;AAC9F,+EAAkE;AAClE,iEAAwE;AACxE,mDAA2D;AAC3D,
|
|
1
|
+
{"version":3,"file":"RefreshPublicTripCacheTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/RefreshPublicTripCacheTask.ts"],"names":[],"mappings":"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"}
|