@golemio/pid 3.11.1-dev.1762446497 → 3.11.1-dev.1767104246
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/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.d.ts +3 -1
- package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js +24 -11
- package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/helpers/DataCacheManager.js +0 -1
- package/dist/integration-engine/ropid-gtfs/helpers/DataCacheManager.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/VPInterfaces.d.ts +4 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.js +19 -11
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.js +31 -22
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.js.map +1 -1
- package/package.json +1 -1
package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { IProcessedPositions, ITripPositionsWithGTFS } from "../../../vehicle-positions/workers/vehicle-positions/interfaces/VPInterfaces";
|
|
1
|
+
import { IProcessedPositions, IRedisKeyExpiration, ITripPositionsWithGTFS } from "../../../vehicle-positions/workers/vehicle-positions/interfaces/VPInterfaces";
|
|
2
2
|
import { RedisModel } from "@golemio/core/dist/integration-engine/models/RedisModel";
|
|
3
3
|
export declare class DelayComputationRedisRepository extends RedisModel {
|
|
4
4
|
static NAMESPACE_PREFIX: string;
|
|
5
5
|
constructor();
|
|
6
6
|
expire(keys: string[], ttlInSeconds: number): Promise<void>;
|
|
7
|
+
expirePxat(tripIdsWithTtl: IRedisKeyExpiration[]): Promise<void>;
|
|
7
8
|
cacheTripDataBatch(trips: ITripPositionsWithGTFS[], positions: IProcessedPositions[]): Promise<void>;
|
|
9
|
+
calculateExpirationTtl(trip: ITripPositionsWithGTFS, lastPositionId: string | null): number;
|
|
8
10
|
}
|
package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js
CHANGED
|
@@ -28,20 +28,25 @@ class DelayComputationRedisRepository extends RedisModel_1.RedisModel {
|
|
|
28
28
|
throw new golemio_errors_1.GeneralError("Error while expiring keys in Redis", this.constructor.name, err);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
+
async expirePxat(tripIdsWithTtl) {
|
|
32
|
+
const pipeline = this.connection.pipeline();
|
|
33
|
+
for (const trip of tripIdsWithTtl) {
|
|
34
|
+
const redisKey = `${this.prefix}:${trip.gtfs_trip_id}`;
|
|
35
|
+
pipeline.pexpireat(redisKey, trip.expirationTtl);
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
await pipeline.exec();
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
throw new golemio_errors_1.GeneralError("Error while expiring keys in Redis", this.constructor.name, err);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
31
44
|
async cacheTripDataBatch(trips, positions) {
|
|
32
45
|
const pipeline = this.connection.pipeline();
|
|
33
|
-
const now = new Date();
|
|
34
|
-
const expirationLimit = new Date(now.getTime() + 30 * 60 * 1000); // 30 minutes
|
|
35
46
|
for (const trip of trips) {
|
|
36
|
-
const tripPositions = positions.find((p) => p.context.tripId === trip.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
const lastPositionId = tripPositions.context.lastPositionId;
|
|
41
|
-
const lastPosition = lastPositionId ? trip.positions.find((p) => p.id === lastPositionId) : null;
|
|
42
|
-
const expirationTtl = lastPosition?.valid_to
|
|
43
|
-
? Math.min(new Date(lastPosition.valid_to).getTime(), expirationLimit.getTime())
|
|
44
|
-
: expirationLimit.getTime();
|
|
47
|
+
const tripPositions = positions.find((p) => p.context.tripId === trip.gtfsData.trip_id);
|
|
48
|
+
const lastPositionId = tripPositions ? tripPositions.context.lastPositionId : null;
|
|
49
|
+
const expirationTtl = this.calculateExpirationTtl(trip, lastPositionId);
|
|
45
50
|
pipeline.set(`${DelayComputationRedisRepository.NAMESPACE_PREFIX}:${trip.gtfs_trip_id}`, JSON.stringify(trip.gtfsData), "PXAT", expirationTtl);
|
|
46
51
|
}
|
|
47
52
|
try {
|
|
@@ -51,6 +56,14 @@ class DelayComputationRedisRepository extends RedisModel_1.RedisModel {
|
|
|
51
56
|
throw new golemio_errors_1.GeneralError("Error while setting caches in Redis with pipeline", this.constructor.name, err);
|
|
52
57
|
}
|
|
53
58
|
}
|
|
59
|
+
calculateExpirationTtl(trip, lastPositionId) {
|
|
60
|
+
const now = new Date();
|
|
61
|
+
const expirationLimit = new Date(now.getTime() + 30 * 60 * 1000); // 30 minutes
|
|
62
|
+
const lastPosition = lastPositionId ? trip.positions.find((p) => p.id === lastPositionId) : null;
|
|
63
|
+
return lastPosition?.valid_to
|
|
64
|
+
? Math.min(new Date(lastPosition.valid_to).getTime(), expirationLimit.getTime())
|
|
65
|
+
: expirationLimit.getTime();
|
|
66
|
+
}
|
|
54
67
|
}
|
|
55
68
|
exports.DelayComputationRedisRepository = DelayComputationRedisRepository;
|
|
56
69
|
DelayComputationRedisRepository.NAMESPACE_PREFIX = const_1.GTFS_DELAY_COMPUTATION_NAMESPACE_PREFIX;
|
package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DelayComputationRedisRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"DelayComputationRedisRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,6 @@ class DataCacheManager {
|
|
|
25
25
|
await this.staticFileRepository.truncate(true);
|
|
26
26
|
await this.runTripsRepository.truncate(true);
|
|
27
27
|
await this.blockStopsRepository.truncate(true);
|
|
28
|
-
await this.delayComputationRepository.truncate(true);
|
|
29
28
|
await this.regionalBusGtfsLookupCacheRepository.truncate(true);
|
|
30
29
|
}
|
|
31
30
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCacheManager.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/helpers/DataCacheManager.ts"],"names":[],"mappings":";;;AAAA,0IAAqI;AACrI,6EAAwE;AACxE,gDAK8B;AAC9B,kCAA+C;AAC/C,4EAAyE;AAGzE,MAAa,gBAAgB;IAQlB,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;SAC3C;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED;QACI,IAAI,CAAC,oBAAoB,GAAG,IAAI,iCAAyB,EAAE,CAAC;QAC5D,IAAI,CAAC,kBAAkB,GAAG,IAAI,+BAAuB,EAAE,CAAC;QACxD,IAAI,CAAC,oBAAoB,GAAG,uBAAkB,CAAC,OAAO,CAClD,iDAAuB,CAAC,yBAAyB,CACpD,CAAC;QACF,IAAI,CAAC,0BAA0B,GAAG,IAAI,uCAA+B,EAAE,CAAC;QACxE,IAAI,CAAC,oCAAoC,GAAG,IAAI,+DAA8B,EAAE,CAAC;IACrF,CAAC;IAEM,KAAK,CAAC,UAAU;QACnB,IAAI;YACA,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"DataCacheManager.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/helpers/DataCacheManager.ts"],"names":[],"mappings":";;;AAAA,0IAAqI;AACrI,6EAAwE;AACxE,gDAK8B;AAC9B,kCAA+C;AAC/C,4EAAyE;AAGzE,MAAa,gBAAgB;IAQlB,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;SAC3C;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED;QACI,IAAI,CAAC,oBAAoB,GAAG,IAAI,iCAAyB,EAAE,CAAC;QAC5D,IAAI,CAAC,kBAAkB,GAAG,IAAI,+BAAuB,EAAE,CAAC;QACxD,IAAI,CAAC,oBAAoB,GAAG,uBAAkB,CAAC,OAAO,CAClD,iDAAuB,CAAC,yBAAyB,CACpD,CAAC;QACF,IAAI,CAAC,0BAA0B,GAAG,IAAI,uCAA+B,EAAE,CAAC;QACxE,IAAI,CAAC,oCAAoC,GAAG,IAAI,+DAA8B,EAAE,CAAC;IACrF,CAAC;IAEM,KAAK,CAAC,UAAU;QACnB,IAAI;YACA,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,oCAAoC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAClE;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,6BAAY,CAAC,yCAAyC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SACjG;IACL,CAAC;CACJ;AApCD,4CAoCC"}
|
|
@@ -59,6 +59,10 @@ export interface IComputationTrip {
|
|
|
59
59
|
shapes_anchor_points: IShapeAnchorPoint[];
|
|
60
60
|
shapes: IComputationTripShape[];
|
|
61
61
|
}
|
|
62
|
+
export interface IRedisKeyExpiration {
|
|
63
|
+
gtfs_trip_id: string;
|
|
64
|
+
expirationTtl: number;
|
|
65
|
+
}
|
|
62
66
|
export interface ITripPositionsWithOrWithoutGTFS {
|
|
63
67
|
gtfsData: IComputationTrip | null;
|
|
64
68
|
id: string;
|
|
@@ -12,7 +12,6 @@ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
|
12
12
|
const PositionsRepository_1 = require("../data-access/PositionsRepository");
|
|
13
13
|
const TripsRepository_1 = require("../data-access/TripsRepository");
|
|
14
14
|
const DelayComputationManager_1 = require("../helpers/DelayComputationManager");
|
|
15
|
-
const VPUtils_1 = require("../helpers/VPUtils");
|
|
16
15
|
const UpdateDelaySchema_1 = require("../schema/UpdateDelaySchema");
|
|
17
16
|
const UpdateDelayLimiter_1 = require("./helpers/UpdateDelayLimiter");
|
|
18
17
|
class ProcessRegionalBusPositionsTask extends workers_1.AbstractTask {
|
|
@@ -27,7 +26,6 @@ class ProcessRegionalBusPositionsTask extends workers_1.AbstractTask {
|
|
|
27
26
|
if (gtfsComputationData === null) {
|
|
28
27
|
return trip;
|
|
29
28
|
}
|
|
30
|
-
await this.delayComputationRedisRepository.set("trip_id", gtfsComputationData, VPUtils_1.VPUtils.DELAY_COMPUTATION_CACHE_TTL);
|
|
31
29
|
trip.gtfsData = gtfsComputationData;
|
|
32
30
|
}
|
|
33
31
|
catch (err) {
|
|
@@ -101,14 +99,18 @@ class ProcessRegionalBusPositionsTask extends workers_1.AbstractTask {
|
|
|
101
99
|
gtfsData,
|
|
102
100
|
});
|
|
103
101
|
}
|
|
104
|
-
const
|
|
102
|
+
const tripsWithNewlyCreatedCache = [];
|
|
103
|
+
const tripsWithExistingCache = [];
|
|
105
104
|
const processedPositions = await Promise.all(tripsPositionsWithGtfsData.map(async (trip) => {
|
|
106
105
|
if (trip.gtfsData === null) {
|
|
107
106
|
trip = await this.enrichTripWithGtfsComputationData(trip);
|
|
108
107
|
if (trip.gtfsData === null) {
|
|
109
108
|
return null;
|
|
110
109
|
}
|
|
111
|
-
|
|
110
|
+
tripsWithNewlyCreatedCache.push(trip);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
tripsWithExistingCache.push(trip);
|
|
112
114
|
}
|
|
113
115
|
const computedPositions = this.regionalBusPositionsManager.computePositions(trip);
|
|
114
116
|
this.propagateKnownPositionProperties(trip, computedPositions);
|
|
@@ -116,10 +118,10 @@ class ProcessRegionalBusPositionsTask extends workers_1.AbstractTask {
|
|
|
116
118
|
}));
|
|
117
119
|
const validProcessedPositions = processedPositions.filter((e) => !!e);
|
|
118
120
|
await this.updateComputedPositionsAndTrips(validProcessedPositions);
|
|
119
|
-
await this.delayComputationRedisRepository.cacheTripDataBatch(tripsWithGtfsToCache, validProcessedPositions);
|
|
120
121
|
await Promise.all([
|
|
121
122
|
this.invalidateBacktrackedPositions(validProcessedPositions),
|
|
122
|
-
this.
|
|
123
|
+
this.delayComputationRedisRepository.cacheTripDataBatch(tripsWithNewlyCreatedCache, validProcessedPositions),
|
|
124
|
+
this.expireDelayComputationCache(tripsWithExistingCache, validProcessedPositions),
|
|
123
125
|
]);
|
|
124
126
|
await queueprocessors_1.QueueManager.sendMessageToExchange(this.queuePrefix, "propagateDelay", {
|
|
125
127
|
processedPositions: validProcessedPositions,
|
|
@@ -136,15 +138,21 @@ class ProcessRegionalBusPositionsTask extends workers_1.AbstractTask {
|
|
|
136
138
|
/**
|
|
137
139
|
* Expire delay computation cache for given trips
|
|
138
140
|
*/
|
|
139
|
-
async expireDelayComputationCache(
|
|
140
|
-
const
|
|
141
|
-
for (const trip of
|
|
141
|
+
async expireDelayComputationCache(tripWithExistingCache, positions) {
|
|
142
|
+
const tripIdsWithTtl = [];
|
|
143
|
+
for (const trip of tripWithExistingCache) {
|
|
144
|
+
const tripPositions = positions.find((p) => p.context.tripId === trip.gtfsData.trip_id);
|
|
145
|
+
const lastPositionId = tripPositions ? tripPositions.context.lastPositionId : null;
|
|
146
|
+
const expirationTtl = this.delayComputationRedisRepository.calculateExpirationTtl(trip, lastPositionId);
|
|
142
147
|
if (trip.gtfsData) {
|
|
143
|
-
|
|
148
|
+
tripIdsWithTtl.push({
|
|
149
|
+
gtfs_trip_id: trip.gtfsData.trip_id,
|
|
150
|
+
expirationTtl,
|
|
151
|
+
});
|
|
144
152
|
}
|
|
145
153
|
}
|
|
146
154
|
try {
|
|
147
|
-
await this.delayComputationRedisRepository.
|
|
155
|
+
await this.delayComputationRedisRepository.expirePxat(tripIdsWithTtl);
|
|
148
156
|
}
|
|
149
157
|
catch (err) {
|
|
150
158
|
this.logger.error(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcessRegionalBusPositionsTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.ts"],"names":[],"mappings":";;;AAAA,oFAAyE;AACzE,oEAAmF;AACnF,wCAA2D;AAC3D,oEAA8E;AAE9E,wEAAqE;AAErE,2FAAqF;AACrF,2EAA6E;AAC7E,6EAA8F;AAE9F,4EAAyE;AACzE,oEAAiE;AACjE,gFAA6E;
|
|
1
|
+
{"version":3,"file":"ProcessRegionalBusPositionsTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,11 +32,11 @@ export declare class UpdateDelayTask extends AbstractTask<IUpdateDelayInput> {
|
|
|
32
32
|
* @param processedPositions - Arrays of all newly computed positions
|
|
33
33
|
*/
|
|
34
34
|
private updateComputedPositionsAndTrips;
|
|
35
|
-
private savePositions;
|
|
36
35
|
/**
|
|
37
36
|
* Expire delay computation cache for given trips
|
|
38
37
|
*/
|
|
39
38
|
private expireDelayComputationCache;
|
|
39
|
+
private savePositions;
|
|
40
40
|
/**
|
|
41
41
|
* Invalidate positions after the last stop sequence of backtracked positions
|
|
42
42
|
* We do this to improve historical data quality
|
package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.js
CHANGED
|
@@ -36,7 +36,6 @@ class UpdateDelayTask extends workers_1.AbstractTask {
|
|
|
36
36
|
if (trip.gtfs_route_type === RouteTypeEnums_1.GTFSRouteTypeEnum.METRO) {
|
|
37
37
|
gtfsComputationData = await this.metroShapePointsFixer.fix(gtfsComputationData);
|
|
38
38
|
}
|
|
39
|
-
await this.delayComputationRedisRepository.set("trip_id", gtfsComputationData, VPUtils_1.VPUtils.DELAY_COMPUTATION_CACHE_TTL);
|
|
40
39
|
trip.gtfsData = gtfsComputationData;
|
|
41
40
|
}
|
|
42
41
|
catch (err) {
|
|
@@ -125,14 +124,18 @@ class UpdateDelayTask extends workers_1.AbstractTask {
|
|
|
125
124
|
gtfsData,
|
|
126
125
|
});
|
|
127
126
|
}
|
|
128
|
-
const
|
|
127
|
+
const tripsWithNewlyCreatedCache = [];
|
|
128
|
+
const tripsWithExistingCache = [];
|
|
129
129
|
const processedPositions = await Promise.all(tripsPositionsWithGtfsData.map(async (trip) => {
|
|
130
130
|
if (trip.gtfsData === null) {
|
|
131
131
|
trip = await this.enrichTripWithGtfsComputationData(trip);
|
|
132
132
|
if (trip.gtfsData === null) {
|
|
133
133
|
return null;
|
|
134
134
|
}
|
|
135
|
-
|
|
135
|
+
tripsWithNewlyCreatedCache.push(trip);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
tripsWithExistingCache.push(trip);
|
|
136
139
|
}
|
|
137
140
|
const computedPositions = this.positionsManager.computePositions(trip, data.schedule);
|
|
138
141
|
this.propagateKnownPositionProperties(trip, computedPositions);
|
|
@@ -140,10 +143,10 @@ class UpdateDelayTask extends workers_1.AbstractTask {
|
|
|
140
143
|
}));
|
|
141
144
|
const validProcessedPositions = processedPositions.filter((e) => !!e);
|
|
142
145
|
await this.updateComputedPositionsAndTrips(validProcessedPositions);
|
|
143
|
-
await this.delayComputationRedisRepository.cacheTripDataBatch(tripsWithGtfsToCache, validProcessedPositions);
|
|
144
146
|
await Promise.all([
|
|
145
147
|
this.invalidateBacktrackedPositions(validProcessedPositions),
|
|
146
|
-
this.
|
|
148
|
+
this.delayComputationRedisRepository.cacheTripDataBatch(tripsWithNewlyCreatedCache, validProcessedPositions),
|
|
149
|
+
this.expireDelayComputationCache(tripsWithExistingCache, validProcessedPositions),
|
|
147
150
|
]);
|
|
148
151
|
await queueprocessors_1.QueueManager.sendMessageToExchange(this.queuePrefix, "propagateDelay", {
|
|
149
152
|
processedPositions: validProcessedPositions,
|
|
@@ -157,6 +160,29 @@ class UpdateDelayTask extends workers_1.AbstractTask {
|
|
|
157
160
|
throw new golemio_errors_1.GeneralError(`Error while updating delay. For trip ids:${tripIds.slice(0, 10).join(",")}`, this.constructor.name, err);
|
|
158
161
|
}
|
|
159
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Expire delay computation cache for given trips
|
|
165
|
+
*/
|
|
166
|
+
async expireDelayComputationCache(tripWithExistingCache, positions) {
|
|
167
|
+
const tripIdsWithTtl = [];
|
|
168
|
+
for (const trip of tripWithExistingCache) {
|
|
169
|
+
const tripPositions = positions.find((p) => p.context.tripId === trip.gtfsData.trip_id);
|
|
170
|
+
const lastPositionId = tripPositions ? tripPositions.context.lastPositionId : null;
|
|
171
|
+
const expirationTtl = this.delayComputationRedisRepository.calculateExpirationTtl(trip, lastPositionId);
|
|
172
|
+
if (trip.gtfsData) {
|
|
173
|
+
tripIdsWithTtl.push({
|
|
174
|
+
gtfs_trip_id: trip.gtfsData.trip_id,
|
|
175
|
+
expirationTtl,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
await this.delayComputationRedisRepository.expirePxat(tripIdsWithTtl);
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
this.logger.error(err);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
160
186
|
async savePositions(data) {
|
|
161
187
|
// unique ids in input data in key-value (id-positions) structure
|
|
162
188
|
let tripIdToPositionDict = {};
|
|
@@ -224,23 +250,6 @@ class UpdateDelayTask extends workers_1.AbstractTask {
|
|
|
224
250
|
// save all new positions
|
|
225
251
|
await this.positionsRepository.bulkSave(data.positions);
|
|
226
252
|
}
|
|
227
|
-
/**
|
|
228
|
-
* Expire delay computation cache for given trips
|
|
229
|
-
*/
|
|
230
|
-
async expireDelayComputationCache(tripPositions) {
|
|
231
|
-
const tripIds = [];
|
|
232
|
-
for (const trip of tripPositions) {
|
|
233
|
-
if (trip.gtfsData) {
|
|
234
|
-
tripIds.push(trip.gtfsData.trip_id);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
try {
|
|
238
|
-
await this.delayComputationRedisRepository.expire(tripIds, VPUtils_1.VPUtils.DELAY_COMPUTATION_CACHE_TTL);
|
|
239
|
-
}
|
|
240
|
-
catch (err) {
|
|
241
|
-
this.logger.error(err);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
253
|
/**
|
|
245
254
|
* Invalidate positions after the last stop sequence of backtracked positions
|
|
246
255
|
* We do this to improve historical data quality
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateDelayTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.ts"],"names":[],"mappings":";;;AAAA,0EAA4D;AAC5D,4FAAiF;AACjF,oFAAyE;AACzE,oEAA8G;AAC9G,sDAA2D;AAC3D,gGAAqF;AACrF,wCAA2D;AAC3D,oEAA8E;AAE9E,wEAAqE;AAErE,2EAAwF;AACxF,2FAAqF;AACrF,2EAA6E;AAC7E,6EAA8F;AAE9F,4EAAyE;AACzE,oEAAiE;AACjE,gFAA6E;AAE7E,kEAA+D;AAC/D,gDAA6C;
|
|
1
|
+
{"version":3,"file":"UpdateDelayTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.ts"],"names":[],"mappings":"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"}
|