Exemple #1
0
  private void doGetLogs(
      HttpResponder responder,
      LoggingContext loggingContext,
      long fromTimeSecsParam,
      long toTimeSecsParam,
      boolean escape,
      String filterStr,
      @Nullable RunRecord runRecord) {
    try {
      TimeRange timeRange = parseTime(fromTimeSecsParam, toTimeSecsParam, responder);
      if (timeRange == null) {
        return;
      }

      Filter filter = FilterParser.parse(filterStr);

      ReadRange readRange =
          new ReadRange(
              timeRange.getFromMillis(), timeRange.getToMillis(), LogOffset.INVALID_KAFKA_OFFSET);
      readRange = adjustReadRange(readRange, runRecord);

      ChunkedLogReaderCallback logCallback =
          new ChunkedLogReaderCallback(responder, logPattern, escape);
      logReader.getLog(
          loggingContext, readRange.getFromMillis(), readRange.getToMillis(), filter, logCallback);
      logCallback.close();
    } catch (SecurityException e) {
      responder.sendStatus(HttpResponseStatus.UNAUTHORIZED);
    } catch (IllegalArgumentException e) {
      responder.sendString(HttpResponseStatus.BAD_REQUEST, e.getMessage());
    } catch (Throwable e) {
      LOG.error("Caught exception", e);
      responder.sendStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR);
    }
  }
Exemple #2
0
  /**
   * If readRange is outside runRecord's range, then the readRange is adjusted to fall within
   * runRecords range.
   */
  private ReadRange adjustReadRange(ReadRange readRange, @Nullable RunRecord runRecord) {
    if (runRecord == null) {
      return readRange;
    }

    long fromTimeMillis = readRange.getFromMillis();
    long toTimeMillis = readRange.getToMillis();

    long runStartMillis = TimeUnit.SECONDS.toMillis(runRecord.getStartTs());
    if (fromTimeMillis < runStartMillis) {
      fromTimeMillis = runStartMillis;
    }
    if (runRecord.getStopTs() != null) {
      long runStopMillis = TimeUnit.SECONDS.toMillis(runRecord.getStopTs());
      if (toTimeMillis > runStopMillis) {
        toTimeMillis = runStopMillis;
      }
    }
    return new ReadRange(fromTimeMillis, toTimeMillis, readRange.getKafkaOffset());
  }