private getAndValidatePingData()

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[]);
  }