Skip to content

Commit

Permalink
fix: Emitting schedule events to metrics exporter for traceability
Browse files Browse the repository at this point in the history
  • Loading branch information
steilerDev committed Jul 7, 2023
1 parent bfec8a2 commit 7bb63d0
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 11 deletions.
36 changes: 25 additions & 11 deletions app/src/app/event/metrics-exporter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {ErrorHandler, ERROR_EVENT, WARN_EVENT} from './error-handler.js';
import * as fs from "fs";
import path from "path";
import {iCPSAppOptions} from "../factory.js";
import {DaemonAppEvents} from "../icloud-app.js";

/**
* The InfluxLineProtocol field set type
Expand Down Expand Up @@ -303,9 +304,10 @@ export class MetricsExporter implements EventHandler {
return;
}

// If (obj instanceof DaemonAppEvents) {
// this.handleDaemonApp(obj);
// }

if (obj instanceof DaemonAppEvents) {
this.handleDaemonApp(obj);
}

if (obj instanceof ErrorHandler) {
this.handleErrorHandler(obj);
Expand Down Expand Up @@ -505,14 +507,26 @@ export class MetricsExporter implements EventHandler {
* Handles events emitted from the daemon app
* @param daemon - The daemon app event emitter
*/
// private handleDaemonApp(daemon: DaemonAppEvents) {
// daemon.on(DaemonAppEvents.EVENTS.SCHEDULED, (next: Date) => {
// });
private handleDaemonApp(daemon: DaemonAppEvents) {
daemon.on(DaemonAppEvents.EVENTS.SCHEDULED, (next: Date) => {
this.logDataPoint(new InfluxLineProtocolPoint()
.addField(FIELDS.STATUS_TIME, Date.now())
.addField(FIELDS.STATUS.name, FIELDS.STATUS.values.SCHEDULED)
.addField(FIELDS.NEXT_SCHEDULE, next.getTime()));
});

// daemon.on(DaemonAppEvents.EVENTS.DONE, (next: Date) => {
// });
daemon.on(DaemonAppEvents.EVENTS.DONE, (next: Date) => {
this.logDataPoint(new InfluxLineProtocolPoint()
.addField(FIELDS.STATUS_TIME, Date.now())
.addField(FIELDS.STATUS.name, FIELDS.STATUS.values.SCHEDULED_SUCCESS)
.addField(FIELDS.NEXT_SCHEDULE, next.getTime()));
});

// daemon.on(DaemonAppEvents.EVENTS.RETRY, (next: Date) => {
// });
// }
daemon.on(DaemonAppEvents.EVENTS.RETRY, (next: Date) => {
this.logDataPoint(new InfluxLineProtocolPoint()
.addField(FIELDS.STATUS_TIME, Date.now())
.addField(FIELDS.STATUS.name, FIELDS.STATUS.values.SCHEDULED_SUCCESS)
.addField(FIELDS.NEXT_SCHEDULE, next.getTime()));
});
}
}
3 changes: 3 additions & 0 deletions docs/src/user-guides/sync-metrics.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ The following fields will be written:
- `SYNC_COMPLETED`
- `SYNC_RETRY`
- `ERROR`
- `SCHEDULED` (no previous run)
- `SCHEDULED_SUCCESS` (last run successful)
- `SCHEDULED_FAILURE` (error during last run)
- `assetsArchived`: The amount of assets archived during an archive operation
- `remoteAssetsDeleted`: The amount of remote assets deleted during an archive operation (if remote delete is enabled)
- `localAssetsLoaded`: Gives the amount of local assets loaded during a sync
Expand Down

0 comments on commit 7bb63d0

Please sign in to comment.