in glean/src/core/metrics/events_database/index.ts [284:313]
private getAndValidatePingData(ping: string): RecordedEvent[] {
const data = this.eventsStore.get([ping]);
if (isUndefined(data)) {
return [];
}
// We expect arrays!
if (!Array.isArray(data)) {
log(
EVENT_DATABASE_LOG_TAG,
`Unexpected value found for ping ${ping}: ${JSON.stringify(data)}. Clearing.`,
LoggingLevel.Error
);
this.eventsStore.delete([ping]);
return [];
}
return data.reduce((result, e) => {
try {
const event = new RecordedEvent(e);
return [...result, event];
} catch {
log(
EVENT_DATABASE_LOG_TAG,
`Unexpected data found in events storage: ${JSON.stringify(e)}. Ignoring.`
);
return result;
}
}, [] as RecordedEvent[]);
}