/** * {@inheritDoc} */ @Override protected void processData(DefaultData data, EntityManager entityManager) { if (data instanceof EUMSpan) { EUMSpan frontEndSpan = (EUMSpan) data; AbstractEUMSpanDetails details = frontEndSpan.getDetails(); if (details instanceof PageLoadRequest) { long traceId = frontEndSpan.getSpanIdent().getTraceId(); long eumSpanId = frontEndSpan.getSpanIdent().getId(); // if the ids are equal no correlation takes place, e.g. because the html was // cached. if (traceId != eumSpanId) { EumSpanCorrelationTask correlationTask = new EumSpanCorrelationTask(traceId, eumSpanId); correlationTask.schedule(true); } } } }
@Override public void run() { boolean reschedule = true; try { SpanIdent backEndSpanIdent = new SpanIdent(traceId, traceId); AbstractSpan backEndSpan = spanDao.get(backEndSpanIdent); if (backEndSpan != null) { backEndSpan.setParentSpanId(eumSpanId); reschedule = false; } } finally { if (reschedule) { schedule(false); // retry later } } }