@Override public ListenableFuture<ResultCode> log(List<LogEntry> messages) { logger.acceptedMessage(); AtomicInteger serializedBytes = new AtomicInteger(); // because of the lambda List<Span> spans; try { spans = messages.stream() .filter(m -> m.category.equals(category)) .map(m -> m.message.getBytes(StandardCharsets.ISO_8859_1)) .map(b -> Base64.getMimeDecoder().decode(b)) // finagle-zipkin uses mime encoding .peek(b -> serializedBytes.addAndGet(b.length)) .map(Codec.THRIFT::readSpan) .filter(s -> s != null).collect(Collectors.toList()); } catch (RuntimeException e) { logger.errorReading(e); return Futures.immediateFailedFuture(e); } logger.readBytes(serializedBytes.get()); if (spans.isEmpty()) return Futures.immediateFuture(ResultCode.OK); logger.readSpans(spans.size()); ErrorLoggingFuture result = new ErrorLoggingFuture(logger, spans); try { consumer.get().accept(spans, result); } catch (RuntimeException e) { result.onError(e); } return result; }
@Override public void run() { ConsumerIterator<byte[], byte[]> messages = stream.iterator(); while (messages.hasNext()) { final List<Span> spans; try { logger.acceptedMessage(); byte[] bytes = messages.next().message(); logger.readBytes(bytes.length); spans = fromBytes(bytes); } catch (RuntimeException e) { logger.errorReading(e); continue; } if (spans.isEmpty()) continue; logger.readSpans(spans.size()); try { consumer.get().accept(spans, logger.acceptSpansCallback(spans)); } catch (RuntimeException e) { logger.errorAcceptingSpans(spans, e); } } }
@Override public void run() { ConsumerIterator<byte[], byte[]> messages = stream.iterator(); while (messages.hasNext()) { final List<Span> spans; try { logger.acceptedMessage(); byte[] bytes = messages.next().message(); logger.readBytes(bytes.length); spans = fromBytes(bytes); } catch (RuntimeException e) { logger.errorReading(e); continue; } if (spans.isEmpty()) continue; logger.readSpans(spans.size()); try { consumer.get().accept(spans, logger.acceptSpansCallback(spans)); } catch (RuntimeException e) { logger.errorAcceptingSpans(spans, e); } } }