@golemio/pid 3.15.1-rc.1824474607 → 3.15.1-rc.1827246324
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/gtfs-rt/helpers/const.d.ts +6 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/const.js +7 -1
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/const.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.d.ts +9 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js +109 -39
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js.map +1 -1
- package/docs/cache/types/redis.md +3 -1
- package/package.json +1 -1
|
@@ -1 +1,7 @@
|
|
|
1
1
|
export declare const MPS_TO_KMH = 3.6;
|
|
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.MPS_TO_KMH = void 0;
|
|
3
|
+
exports.LOCK_REFRESH_INTERVAL_RATIO = exports.MPS_TO_KMH = void 0;
|
|
4
4
|
exports.MPS_TO_KMH = 3.6;
|
|
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=const.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,GAAG,CAAC"}
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,GAAG,CAAC;AAE9B;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,IAAI,CAAC"}
|
package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.d.ts
CHANGED
|
@@ -9,8 +9,16 @@ export declare class GenerateFilesTask extends AbstractEmptyTask {
|
|
|
9
9
|
private readonly gtfsRtRedisRepository;
|
|
10
10
|
private readonly alertsGenerator;
|
|
11
11
|
private readonly vehicleDescriptor;
|
|
12
|
+
private lockTimeout;
|
|
13
|
+
private refreshInterval;
|
|
12
14
|
constructor(queuePrefix: string);
|
|
13
15
|
protected execute(): Promise<void>;
|
|
16
|
+
private logFinishTime;
|
|
17
|
+
private readStopTimeIds;
|
|
18
|
+
private speedMpsToKmh;
|
|
19
|
+
private feedEntityFromTripData;
|
|
20
|
+
private stopTimeUpdatesFromVehicleTrip;
|
|
21
|
+
protected generateFiles(): Promise<void>;
|
|
14
22
|
/**
|
|
15
23
|
* Get rid of vehicle descriptors with duplicate IDs from a given GTFS-RT message
|
|
16
24
|
*
|
|
@@ -43,4 +51,5 @@ export declare class GenerateFilesTask extends AbstractEmptyTask {
|
|
|
43
51
|
private validateAndSaveBuffer;
|
|
44
52
|
private shouldFallbackToScheduleTime;
|
|
45
53
|
private handleCanceledTrip;
|
|
54
|
+
private createMutex;
|
|
46
55
|
}
|
package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js
CHANGED
|
@@ -23,12 +23,16 @@ const workers_1 = require("@golemio/core/dist/integration-engine/workers");
|
|
|
23
23
|
const WebhookDecorators_1 = require("@golemio/core/dist/integration-engine/workers/helpers/WebhookDecorators");
|
|
24
24
|
const CloudflareCachePurgeWebhook_1 = require("@golemio/core/dist/integration-engine/workers/webhooks/CloudflareCachePurgeWebhook");
|
|
25
25
|
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
26
|
+
const connectors_1 = require("@golemio/core/dist/integration-engine/connectors");
|
|
27
|
+
const redis_semaphore_1 = require("@golemio/core/dist/shared/redis-semaphore");
|
|
28
|
+
const promises_1 = require("node:timers/promises");
|
|
26
29
|
const ovapi_gtfs_realtime_bindings_1 = require("@golemio/ovapi-gtfs-realtime-bindings");
|
|
27
30
|
const const_1 = require("../../../../../const");
|
|
28
31
|
const GtfsRtRedisRepository_1 = require("../data-access/GtfsRtRedisRepository");
|
|
29
32
|
const AlertsGenerator_1 = require("../helpers/AlertsGenerator");
|
|
30
33
|
const VehicleDescriptor_1 = require("../helpers/VehicleDescriptor");
|
|
31
34
|
const const_2 = require("../helpers/const");
|
|
35
|
+
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
32
36
|
class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
33
37
|
constructor(queuePrefix) {
|
|
34
38
|
super(queuePrefix);
|
|
@@ -44,14 +48,45 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
44
48
|
const vymiRoutesRepository = new ropid_vymi_1.RopidVYMIEventsRoutesModel();
|
|
45
49
|
this.alertsGenerator = new AlertsGenerator_1.AlertsGenerator(GenerateFilesTask.config, this.gtfsRtRedisRepository, jisEventsRepository, vymiEventsRepository, vymiRoutesRepository);
|
|
46
50
|
this.vehicleDescriptor = new VehicleDescriptor_1.VehicleDescriptor();
|
|
51
|
+
// should finish under 10 seconds
|
|
52
|
+
this.lockTimeout = GenerateFilesTask.config.getValue("module.pid.vehicle-positions.gtfsRealtime.mutexLockTimeout", 10000);
|
|
53
|
+
this.refreshInterval = this.lockTimeout * const_2.LOCK_REFRESH_INTERVAL_RATIO;
|
|
47
54
|
}
|
|
48
55
|
async execute() {
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
56
|
+
const startTimeMs = Date.now();
|
|
57
|
+
const mutex = this.createMutex();
|
|
58
|
+
const lockAcquired = await mutex.tryAcquire();
|
|
59
|
+
if (!lockAcquired) {
|
|
60
|
+
this.logger.info(`${this.constructor.name}: mutex lock was not acquired, other task instance is running.`);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
await this.generateFiles();
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
if (err instanceof golemio_errors_1.AbstractGolemioError) {
|
|
68
|
+
throw err;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
throw new golemio_errors_1.GeneralError("Error while processing task to generate files for GTFS-RT.", this.constructor.name, err);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
await mutex.release();
|
|
76
|
+
}
|
|
77
|
+
const ellapsedTimeInMs = Date.now() - startTimeMs;
|
|
78
|
+
this.logFinishTime(ellapsedTimeInMs);
|
|
79
|
+
if (ellapsedTimeInMs < this.refreshInterval) {
|
|
80
|
+
await (0, promises_1.setTimeout)(Math.abs(this.refreshInterval - ellapsedTimeInMs));
|
|
81
|
+
}
|
|
82
|
+
integration_engine_1.QueueManager.sendMessageToExchange(this.queuePrefix, this.queueName, {});
|
|
83
|
+
}
|
|
84
|
+
logFinishTime(ellapsedTimeInMs) {
|
|
85
|
+
const outrunLockTimeoutMsg = ellapsedTimeInMs > this.lockTimeout ? "Slow" : "OK";
|
|
86
|
+
const logLevel = ellapsedTimeInMs > this.lockTimeout ? "warn" : "info";
|
|
87
|
+
this.logger[logLevel](`${this.constructor.name}: finished in ${ellapsedTimeInMs}ms = ${outrunLockTimeoutMsg}.`);
|
|
88
|
+
}
|
|
89
|
+
readStopTimeIds(tripData) {
|
|
55
90
|
const stopTimesIds = [];
|
|
56
91
|
for (const tripRecord of tripData) {
|
|
57
92
|
const { id } = this.vehicleDescriptor.getVehicleDescriptor(tripRecord);
|
|
@@ -59,6 +94,47 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
59
94
|
stopTimesIds.push(`${id}-${tripRecord.gtfs_trip_id}`);
|
|
60
95
|
}
|
|
61
96
|
}
|
|
97
|
+
return stopTimesIds;
|
|
98
|
+
}
|
|
99
|
+
speedMpsToKmh(speed) {
|
|
100
|
+
return speed ? parseFloat((speed / const_2.MPS_TO_KMH).toFixed(2)) : null;
|
|
101
|
+
}
|
|
102
|
+
feedEntityFromTripData(tripRecord, entityTimestamp, tripDescriptor, vehicleDescriptor) {
|
|
103
|
+
const feedEntity = {
|
|
104
|
+
id: tripRecord.id,
|
|
105
|
+
vehicle: {
|
|
106
|
+
currentStopSequence: tripRecord.last_position.last_stop_sequence,
|
|
107
|
+
position: {
|
|
108
|
+
bearing: tripRecord.last_position.bearing,
|
|
109
|
+
latitude: tripRecord.last_position.lat,
|
|
110
|
+
longitude: tripRecord.last_position.lng,
|
|
111
|
+
speed: this.speedMpsToKmh(tripRecord.last_position.speed),
|
|
112
|
+
},
|
|
113
|
+
timestamp: entityTimestamp,
|
|
114
|
+
trip: tripDescriptor,
|
|
115
|
+
vehicle: vehicleDescriptor,
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
return feedEntity;
|
|
119
|
+
}
|
|
120
|
+
stopTimeUpdatesFromVehicleTrip(stopTimes, vehicleDescriptor, tripRecord) {
|
|
121
|
+
if (typeof vehicleDescriptor.id === "string") {
|
|
122
|
+
const stopTimesForVehicle = stopTimes.get(`${vehicleDescriptor.id}-${tripRecord.gtfs_trip_id}`);
|
|
123
|
+
const stopTimeUpdates = this.generateStopTimeUpdate(tripRecord.gtfs_route_type, stopTimesForVehicle, tripRecord.last_position);
|
|
124
|
+
return stopTimeUpdates;
|
|
125
|
+
}
|
|
126
|
+
this.logger.error(new golemio_errors_1.GeneralError(`Cannot get stopTimeUpdates for trip with unknown vehicleId and gtfsTripId \
|
|
127
|
+
'${tripRecord.gtfs_trip_id}'`, this.constructor.name, undefined, undefined, "pid"));
|
|
128
|
+
return [];
|
|
129
|
+
}
|
|
130
|
+
async generateFiles() {
|
|
131
|
+
const currentDate = new Date();
|
|
132
|
+
const tripData = await this.tripsRepository.findAllForGTFSRt(currentDate);
|
|
133
|
+
const feedHeader = this.createFeedHeader();
|
|
134
|
+
const updatesMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
|
|
135
|
+
const positionsMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
|
|
136
|
+
const pidFeedMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
|
|
137
|
+
const stopTimesIds = this.readStopTimeIds(tripData);
|
|
62
138
|
if (stopTimesIds.length === 0) {
|
|
63
139
|
this.logger.warn("No stop time ids found for GTFS-RT generation. Most likely no vehicles are running.");
|
|
64
140
|
return;
|
|
@@ -84,34 +160,11 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
84
160
|
tripId: tripRecord.gtfs_trip_id,
|
|
85
161
|
routeId: tripRecord.gtfs_route_id,
|
|
86
162
|
};
|
|
87
|
-
|
|
88
|
-
if (typeof vehicleDescriptor.id === "string") {
|
|
89
|
-
const stopTimesForVehicle = stopTimes.get(`${vehicleDescriptor.id}-${tripRecord.gtfs_trip_id}`);
|
|
90
|
-
stopTimeUpdates = this.generateStopTimeUpdate(tripRecord.gtfs_route_type, stopTimesForVehicle, tripRecord.last_position);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
this.logger.error(new golemio_errors_1.GeneralError(`Cannot get stopTimeUpdates for trip with unknown vehicleId and gtfsTripId \
|
|
94
|
-
'${tripRecord.gtfs_trip_id}'`, this.constructor.name, undefined, undefined, "pid"));
|
|
95
|
-
}
|
|
163
|
+
const stopTimeUpdates = this.stopTimeUpdatesFromVehicleTrip(stopTimes, vehicleDescriptor, tripRecord);
|
|
96
164
|
const shouldSkipTripUpdate = stopTimeUpdates.every((el) => el.scheduleRelationship === ovapi_gtfs_realtime_bindings_1.transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.NO_DATA ||
|
|
97
165
|
gtfsTripIdMap[tripRecord.gtfs_trip_id]);
|
|
98
166
|
entityTripStarts.push(tripRecord.start_timestamp);
|
|
99
|
-
const positionEntity =
|
|
100
|
-
id: tripRecord.id,
|
|
101
|
-
vehicle: {
|
|
102
|
-
currentStopSequence: tripRecord.last_position.last_stop_sequence,
|
|
103
|
-
position: {
|
|
104
|
-
bearing: tripRecord.last_position.bearing,
|
|
105
|
-
latitude: tripRecord.last_position.lat,
|
|
106
|
-
longitude: tripRecord.last_position.lng,
|
|
107
|
-
speed: tripRecord.last_position.speed &&
|
|
108
|
-
parseFloat((tripRecord.last_position.speed / const_2.MPS_TO_KMH).toFixed(2)),
|
|
109
|
-
},
|
|
110
|
-
timestamp: entityTimestamp,
|
|
111
|
-
trip: tripDescriptor,
|
|
112
|
-
vehicle: vehicleDescriptor,
|
|
113
|
-
},
|
|
114
|
-
};
|
|
167
|
+
const positionEntity = this.feedEntityFromTripData(tripRecord, entityTimestamp, tripDescriptor, vehicleDescriptor);
|
|
115
168
|
const positionsMessageEntity = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedEntity.fromObject(positionEntity);
|
|
116
169
|
positionsMessage.entity.push(positionsMessageEntity);
|
|
117
170
|
feedMessageEntity = structuredClone(positionsMessageEntity);
|
|
@@ -142,10 +195,16 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
142
195
|
}
|
|
143
196
|
this.removeDuplicateVehicleDescriptors(positionsMessage, entityTripStarts);
|
|
144
197
|
this.removeDuplicateVehicleDescriptors(pidFeedMessage, entityTripStarts, { shouldRemoveVehicleOnly: true });
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
198
|
+
const results = await Promise.allSettled([
|
|
199
|
+
this.validateAndSaveBuffer("trip_updates", updatesMessage),
|
|
200
|
+
this.validateAndSaveBuffer("vehicle_positions", positionsMessage),
|
|
201
|
+
this.validateAndSaveBuffer("pid_feed", pidFeedMessage),
|
|
202
|
+
this.alertsGenerator.generateAlerts(feedHeader),
|
|
203
|
+
]);
|
|
204
|
+
const rejectedPromise = results.find((result) => result.status === "rejected");
|
|
205
|
+
if (rejectedPromise) {
|
|
206
|
+
throw rejectedPromise.reason;
|
|
207
|
+
}
|
|
149
208
|
}
|
|
150
209
|
/**
|
|
151
210
|
* Get rid of vehicle descriptors with duplicate IDs from a given GTFS-RT message
|
|
@@ -249,7 +308,7 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
249
308
|
const header = {
|
|
250
309
|
gtfsRealtimeVersion: "2.0",
|
|
251
310
|
incrementality: ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedHeader.Incrementality.FULL_DATASET,
|
|
252
|
-
timestamp: Math.round(
|
|
311
|
+
timestamp: Math.round(Date.now() / 1000),
|
|
253
312
|
};
|
|
254
313
|
return ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedHeader.fromObject(header);
|
|
255
314
|
}
|
|
@@ -264,15 +323,15 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
264
323
|
("0" + startTimestamp.getUTCDate()).slice(-2);
|
|
265
324
|
return formattedDate;
|
|
266
325
|
}
|
|
267
|
-
validateAndSaveBuffer(feedName, message) {
|
|
326
|
+
async validateAndSaveBuffer(feedName, message) {
|
|
268
327
|
const feedMessageVerificationResult = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.verify(message);
|
|
269
328
|
if (feedMessageVerificationResult !== null) {
|
|
270
329
|
this.logger.error(new golemio_errors_1.GeneralError(`Invalid GTFS-RT message for feed '${feedName}'`, this.constructor.name, feedMessageVerificationResult, undefined, "pid"));
|
|
271
330
|
return;
|
|
272
331
|
}
|
|
273
332
|
const buffer = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.encode(message).finish();
|
|
274
|
-
this.gtfsRtRedisRepository.set(feedName + "_timestamp", message.header.timestamp);
|
|
275
|
-
this.gtfsRtRedisRepository.hset(feedName + ".pb", buffer.toString("binary"));
|
|
333
|
+
await this.gtfsRtRedisRepository.set(feedName + "_timestamp", message.header.timestamp);
|
|
334
|
+
await this.gtfsRtRedisRepository.hset(feedName + ".pb", buffer.toString("binary"));
|
|
276
335
|
}
|
|
277
336
|
shouldFallbackToScheduleTime(vehiclePosition) {
|
|
278
337
|
return ((vehiclePosition.state_position === const_1.StatePositionEnum.BEFORE_TRACK ||
|
|
@@ -298,6 +357,17 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
298
357
|
updatesMessage.entity.push(feedEntity);
|
|
299
358
|
return feedEntity;
|
|
300
359
|
}
|
|
360
|
+
createMutex() {
|
|
361
|
+
const redisClient = connectors_1.RedisConnector.getConnection();
|
|
362
|
+
return new redis_semaphore_1.Mutex(redisClient, this.queueName, {
|
|
363
|
+
acquireAttemptsLimit: 1,
|
|
364
|
+
lockTimeout: this.lockTimeout,
|
|
365
|
+
refreshInterval: this.refreshInterval,
|
|
366
|
+
onLockLost: (err) => {
|
|
367
|
+
this.logger.info(`${this.constructor.name}: mutex lock was lost, will be generated in next task run.`);
|
|
368
|
+
},
|
|
369
|
+
});
|
|
370
|
+
}
|
|
301
371
|
}
|
|
302
372
|
exports.GenerateFilesTask = GenerateFilesTask;
|
|
303
373
|
GenerateFilesTask.config = Di_2.VPContainer.resolve(CoreToken_1.CoreToken.SimpleConfig);
|
package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateFilesTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GenerateFilesTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,7 +60,9 @@ flowchart TD;
|
|
|
60
60
|
- Feedy jsou nabízený přes API `/v2/vehiclepositions/gtfsrt/{feed}`, kde `{feed}` je název feedu s příponou `.pb`
|
|
61
61
|
- Žádaný feed se načte pomocí `HGET` a vrátí se jako binární blob. Pokud feed neexistuje, vrátí se 404
|
|
62
62
|
- Pomocný timestamp se načte pomocí `GET` a vrátí se jako hodnota hlavičky `Last-Modified` převedená na ISO string. Pokud timestamp neexistuje, hodnota hlavičky bude unix timestamp 0 jako ISO string. Využívá se především pro monitoring a alerting
|
|
63
|
-
- Feedy se generují 3x za minutu (rabín 2x)
|
|
63
|
+
- Feedy se generují nejméně 3x za minutu (rabín 2x) pomocí queue-message
|
|
64
|
+
- Používají redis-mutex na zamykání, aby neběželo více shodných tasků v jeden okamžik
|
|
65
|
+
- Pokud generování stíhá běžet rychleji, task se snaží do ±7 vteřin svého běhu spustit nové generování souborů (opět přes queue-message).
|
|
64
66
|
|
|
65
67
|
### Flowchart
|
|
66
68
|
|