Java Code Examples for org.slf4j.MDC#clear()

The following examples show how to use org.slf4j.MDC#clear() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: VSCrawler.java    From vscrawler with Apache License 2.0 6 votes vote down vote up
@Override
public void run() {
    try {
        MDC.put("grabID", LogIdGenerator.genGrabTransactionID(vsCrawlerContext.getCrawlerName()));
        activeTasks.incrementAndGet();
        // 为了性能,不打印json
        log.info("handle seed: {}", seed.getData());
        processSeed(seed);
    } catch (Exception e) {
        log.error("process request {} error", JSONViewWrapper.wrap(seed), e);
    } finally {
        if (activeTasks.decrementAndGet() < threadPool.getMaximumPoolSize()) {
            activeDispatchThread();
        }
        MDC.clear();
    }
}
 
Example 2
Source File: ExampleTest.java    From eclair with Apache License 2.0 6 votes vote down vote up
@Test
public void mdcByDefault() throws NoSuchMethodException {
    // given
    listAppender.list.clear();
    String first = "content";
    Double second = Math.PI;
    // when
    invoke(() -> example.mdcByDefault(first, second), DEBUG);
    // then
    String expected = "```\n" +
            "DEBUG [first=content, second=3.141592653589793] r.t.e.example.Example.mdcByDefault > first=\"content\", second=3.141592653589793\n" +
            "```";
    String actual = exampleCodeBuilder.buildMultilineBlock(listAppender.list);
    MDC.clear();
    listAppender.list.clear();
    System.out.println(actual);
    assertEquals(expected, actual);
}
 
Example 3
Source File: TestRequestRecord.java    From cf-java-logging-support with Apache License 2.0 6 votes vote down vote up
@Test
public void testResponseTimeIn() throws JSONObjectException, IOException {
    MDC.clear();
    String layer = "testResponseTimeIn";
    rrec = new RequestRecord(layer);
    long start = rrec.start();
    doWait(150);
    long end = rrec.stop();

    logger.info(Markers.REQUEST_MARKER, rrec.toString());

    assertThat(getField(Fields.LAYER), is(layer));
    assertThat(getField(Fields.DIRECTION), is(Direction.IN.toString()));
    assertThat(Double.valueOf(getField(Fields.RESPONSE_TIME_MS)).longValue(), lessThanOrEqualTo(Double.valueOf(end -
                                                                                                               start)
                                                                                                      .longValue()));
    assertThat(getField(Fields.RESPONSE_SENT_AT), not(nullValue()));
    assertThat(getField(Fields.REQUEST_RECEIVED_AT), not(nullValue()));
    assertThat(getField(Fields.WRITTEN_TS), is(notNullValue()));
}
 
Example 4
Source File: ExampleTest.java    From eclair with Apache License 2.0 6 votes vote down vote up
@Test
public void mdc() throws NoSuchMethodException {
    // given
    listAppender.list.clear();
    // when
    invoke(() -> example.outer(), DEBUG);
    // then
    String expected = "```\n" +
            "DEBUG [] r.t.eclair.example.Example.outer >\n" +
            "DEBUG [beanReference={\"i\":0,\"s\":null}, sum=2, static=string, staticMethod=01234567-89ab-cdef-ghij-klmnopqrstuv] r.t.eclair.example.Example.mdc >\n" +
            "DEBUG [beanReference={\"i\":0,\"s\":null}, sum=2, static=string, staticMethod=01234567-89ab-cdef-ghij-klmnopqrstuv] r.t.eclair.example.Example.inner >\n" +
            "DEBUG [beanReference={\"i\":0,\"s\":null}, sum=2, static=string, staticMethod=01234567-89ab-cdef-ghij-klmnopqrstuv] r.t.eclair.example.Example.mdc <\n" +
            "DEBUG [sum=2] r.t.eclair.example.Example.outer <\n" +
            "```";
    String actual = exampleCodeBuilder.buildMultilineBlock(listAppender.list);
    MDC.clear();
    listAppender.list.clear();
    System.out.println(actual);
    assertEquals(expected, actual);
}
 
Example 5
Source File: RequestScopedMdcTest.java    From armeria with Apache License 2.0 5 votes vote down vote up
@Test
void getAll() {
    final ServiceRequestContext ctx = newContext();

    MDC.put("foo", "1");
    MDC.put("bar", "2");
    RequestScopedMdc.put(ctx, "bar", "3");
    RequestScopedMdc.put(ctx, "baz", "4");

    assertThat(MDC.getCopyOfContextMap()).containsOnly(
            Maps.immutableEntry("foo", "1"),
            Maps.immutableEntry("bar", "2"));

    assertThat(RequestScopedMdc.getAll(ctx)).containsOnly(
            Maps.immutableEntry("bar", "3"),
            Maps.immutableEntry("baz", "4"));

    try (SafeCloseable ignored = ctx.push()) {
        // The case where thread-local and request-scoped maps are both non-empty.
        assertThat(MDC.getCopyOfContextMap()).containsOnly(
                Maps.immutableEntry("foo", "1"),
                Maps.immutableEntry("bar", "3"),
                Maps.immutableEntry("baz", "4"));

        // The case where only request-scoped map is available.
        MDC.clear();
        assertThat(MDC.getCopyOfContextMap()).containsOnly(
                Maps.immutableEntry("bar", "3"),
                Maps.immutableEntry("baz", "4"));

        // The case where thread-local and request-scoped maps are both empty.
        RequestScopedMdc.clear(ctx);
        assertThat(MDC.getCopyOfContextMap()).isIn(Collections.emptyMap(), null);

        // The case where only thread-local map is available.
        MDC.put("qux", "5");
        assertThat(MDC.getCopyOfContextMap()).containsOnly(
                Maps.immutableEntry("qux", "5"));
    }
}
 
Example 6
Source File: CopyThreadLocalCallable.java    From che with Eclipse Public License 2.0 5 votes vote down vote up
@Override
public T call() throws Exception {
  try {
    threadLocalState.propagate();
    if (currentMdcState != null) {
      MDC.setContextMap(currentMdcState);
    }
    return wrapped.call();
  } finally {
    threadLocalState.cleanup();
    MDC.clear();
  }
}
 
Example 7
Source File: RequestContextExportingAppenderTest.java    From armeria with Apache License 2.0 5 votes vote down vote up
@BeforeEach
void setUp(TestInfo testInfo) {
    rootLogger.getLoggerContext().getStatusManager().clear();
    MDC.clear();
    testLogger = (Logger) LoggerFactory.getLogger("loggerTest." + testInfo.getDisplayName());
    testLogger.setLevel(Level.ALL);
}
 
Example 8
Source File: AsyncNettyHelper.java    From riposte with Apache License 2.0 4 votes vote down vote up
/**
 * Links the given distributed tracing and logging MDC info to the current thread. Any existing tracing and MDC info
 * on the current thread will be wiped out and overridden, so if you need to go back to them in the future you'll
 * need to store the copy info returned by this method for later.
 *
 * @param distributedTraceStackToLink
 *     The stack of distributed traces that should be associated with the current thread. This can be null - if it
 *     is null then {@link Tracer} will be setup with an empty trace stack (wiping out any existing in-progress
 *     traces).
 * @param mdcContextMapToLink
 *     The MDC context map to associate with the current thread. This can be null - if it is null then {@link
 *     org.slf4j.MDC#clear()} will be called (wiping out any existing MDC info).
 *
 * @return A *COPY* of the original trace stack and MDC info on the thread when this method was called (before being
 * replaced with the given arguments). The {@link Pair} object will never be null, but the values it contains may be
 * null. A copy is returned rather than the original to prevent undesired behavior (storing the return value and
 * then passing it in to {@link #unlinkTracingAndMdcFromCurrentThread(Pair)} later should *guarantee* that after
 * calling that unlink method the thread state is exactly as it was right *before* calling this link method. If we
 * returned the original trace stack this contract guarantee could be violated).
 */
public static Pair<Deque<Span>, Map<String, String>> linkTracingAndMdcToCurrentThread(
    Deque<Span> distributedTraceStackToLink, Map<String, String> mdcContextMapToLink
) {
    // Unregister the trace stack so that if there's already a trace on the stack we don't get exceptions when
    //      registering the desired stack with the thread, and keep a copy of the results.
    Map<String, String> callingThreadMdcContextMap = MDC.getCopyOfContextMap();
    Deque<Span> callingThreadTraceStack = Tracer.getInstance().unregisterFromThread();

    // Now setup the trace stack and MDC as desired
    if (mdcContextMapToLink == null)
        MDC.clear();
    else
        MDC.setContextMap(mdcContextMapToLink);

    Tracer.getInstance().registerWithThread(distributedTraceStackToLink);

    // Return the copied original data so that it can be re-linked later (if the caller wants)
    return Pair.of(callingThreadTraceStack, callingThreadMdcContextMap);
}
 
Example 9
Source File: TestMDCFilter.java    From big-c with Apache License 2.0 4 votes vote down vote up
@Test
public void mdc() throws Exception {
  HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
  Mockito.when(request.getUserPrincipal()).thenReturn(null);
  Mockito.when(request.getMethod()).thenReturn("METHOD");
  Mockito.when(request.getPathInfo()).thenReturn("/pathinfo");

  ServletResponse response = Mockito.mock(ServletResponse.class);

  final AtomicBoolean invoked = new AtomicBoolean();

  FilterChain chain = new FilterChain() {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse)
      throws IOException, ServletException {
      assertEquals(MDC.get("hostname"), null);
      assertEquals(MDC.get("user"), null);
      assertEquals(MDC.get("method"), "METHOD");
      assertEquals(MDC.get("path"), "/pathinfo");
      invoked.set(true);
    }
  };

  MDC.clear();
  Filter filter = new MDCFilter();
  filter.init(null);

  filter.doFilter(request, response, chain);
  assertTrue(invoked.get());
  assertNull(MDC.get("hostname"));
  assertNull(MDC.get("user"));
  assertNull(MDC.get("method"));
  assertNull(MDC.get("path"));

  Mockito.when(request.getUserPrincipal()).thenReturn(new Principal() {
    @Override
    public String getName() {
      return "name";
    }
  });

  invoked.set(false);
  chain = new FilterChain() {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse)
      throws IOException, ServletException {
      assertEquals(MDC.get("hostname"), null);
      assertEquals(MDC.get("user"), "name");
      assertEquals(MDC.get("method"), "METHOD");
      assertEquals(MDC.get("path"), "/pathinfo");
      invoked.set(true);
    }
  };
  filter.doFilter(request, response, chain);
  assertTrue(invoked.get());

  HostnameFilter.HOSTNAME_TL.set("HOST");

  invoked.set(false);
  chain = new FilterChain() {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse)
      throws IOException, ServletException {
      assertEquals(MDC.get("hostname"), "HOST");
      assertEquals(MDC.get("user"), "name");
      assertEquals(MDC.get("method"), "METHOD");
      assertEquals(MDC.get("path"), "/pathinfo");
      invoked.set(true);
    }
  };
  filter.doFilter(request, response, chain);
  assertTrue(invoked.get());

  HostnameFilter.HOSTNAME_TL.remove();

  filter.destroy();
}
 
Example 10
Source File: MDCUtilTest.java    From styx with Apache License 2.0 4 votes vote down vote up
@After
public void tearDown() {
  MDC.clear();
}
 
Example 11
Source File: ConsumerWithTracingTest.java    From wingtips with Apache License 2.0 4 votes vote down vote up
private void resetTracing() {
    MDC.clear();
    Tracer.getInstance().unregisterFromThread();
}
 
Example 12
Source File: RunnableWithTracingTest.java    From wingtips with Apache License 2.0 4 votes vote down vote up
private void resetTracing() {
    MDC.clear();
    Tracer.getInstance().unregisterFromThread();
}
 
Example 13
Source File: AsyncCompletionHandlerWithTracingAndMdcSupportTest.java    From riposte with Apache License 2.0 4 votes vote down vote up
private void resetTracingAndMdc() {
    MDC.clear();
    Tracer.getInstance().unregisterFromThread();
}
 
Example 14
Source File: JettySolrRunner.java    From lucene-solr with Apache License 2.0 4 votes vote down vote up
/**
   * Stop the Jetty server
   *
   * @throws Exception if an error occurs on shutdown
   */
  public void stop() throws Exception {
    // Do not let Jetty/Solr pollute the MDC for this thread
    Map<String,String> prevContext = MDC.getCopyOfContextMap();
    MDC.clear();
    try {
      Filter filter = dispatchFilter.getFilter();

      // we want to shutdown outside of jetty cutting us off
      SolrDispatchFilter sdf = getSolrDispatchFilter();
      ExecutorService customThreadPool = null;
      if (sdf != null) {
        customThreadPool = ExecutorUtil.newMDCAwareCachedThreadPool(new SolrNamedThreadFactory("jettyShutDown"));

        sdf.closeOnDestroy(false);
//        customThreadPool.submit(() -> {
//          try {
//            sdf.close();
//          } catch (Throwable t) {
//            log.error("Error shutting down Solr", t);
//          }
//        });
        try {
          sdf.close();
        } catch (Throwable t) {
          log.error("Error shutting down Solr", t);
        }
      }

      QueuedThreadPool qtp = (QueuedThreadPool) server.getThreadPool();
      ReservedThreadExecutor rte = qtp.getBean(ReservedThreadExecutor.class);

      server.stop();

      if (server.getState().equals(Server.FAILED)) {
        filter.destroy();
        if (extraFilters != null) {
          for (FilterHolder f : extraFilters) {
            f.getFilter().destroy();
          }
        }
      }

      // stop timeout is 0, so we will interrupt right away
      while(!qtp.isStopped()) {
        qtp.stop();
        if (qtp.isStopped()) {
          Thread.sleep(50);
        }
      }

      // we tried to kill everything, now we wait for executor to stop
      qtp.setStopTimeout(Integer.MAX_VALUE);
      qtp.stop();
      qtp.join();

      if (rte != null) {
        // we try and wait for the reserved thread executor, but it doesn't always seem to work
        // so we actually set 0 reserved threads at creation

        rte.stop();

        TimeOut timeout = new TimeOut(30, TimeUnit.SECONDS, TimeSource.NANO_TIME);
        timeout.waitFor("Timeout waiting for reserved executor to stop.", ()
            -> rte.isStopped());
      }

      if (customThreadPool != null) {
        ExecutorUtil.shutdownAndAwaitTermination(customThreadPool);
      }

      do {
        try {
          server.join();
        } catch (InterruptedException e) {
          // ignore
        }
      } while (!server.isStopped());

    } finally {
      if (enableProxy) {
        proxy.close();
      }

      if (prevContext != null) {
        MDC.setContextMap(prevContext);
      } else {
        MDC.clear();
      }
    }
  }
 
Example 15
Source File: RemoteDataCollector.java    From datacollector with Apache License 2.0 4 votes vote down vote up
@Override
public String savePipeline(
    String user,
    String name,
    String rev,
    String description,
    SourceOffset offset,
    final PipelineConfiguration pipelineConfiguration,
    RuleDefinitions ruleDefinitions,
    Acl acl,
    Map<String, Object> metadata
) {
  UUID uuid = null;
  try {
    uuid = GroupsInScope.executeIgnoreGroups(() -> {
      // Due to some reason, if pipeline folder doesn't exist but state file exists then remove the state file.
      if (!pipelineStore.hasPipeline(name) && pipelineStateExists(name, rev)) {
        LOG.warn("Deleting state file for pipeline {} as pipeline is deleted", name);
        pipelineStateStore.delete(name, rev);
      }
      UUID uuidRet = pipelineStore.create(user, name, name, description, true, false, metadata).getUuid();
      pipelineConfiguration.setUuid(uuidRet);
      pipelineConfiguration.setPipelineId(name);
      PipelineConfigurationValidator validator = new PipelineConfigurationValidator(stageLibrary,
          buildInfo,
          name,
          pipelineConfiguration
      );
      PipelineConfiguration validatedPipelineConfig = validator.validate();
      //By default encrypt credentials from Remote data collector
      pipelineStore.save(user, name, rev, description, validatedPipelineConfig, true);
      pipelineStore.storeRules(name, rev, ruleDefinitions, false);
      if (acl != null) { // can be null for old dpm or when DPM jobs have no acl
        aclStoreTask.saveAcl(name, acl);
      }
      LOG.info("Offset for remote pipeline '{}:{}' is {}", name, rev, offset);
      if (offset != null) {
        OffsetFileUtil.saveSourceOffset(runtimeInfo, name, rev, offset);
      }
      return uuidRet;
    });
  } catch (Exception ex) {
    LOG.warn(Utils.format("Error while saving pipeline: {} is {}", name, ex), ex);
    if (ex.getCause() != null) {
      ExceptionUtils.throwUndeclared(ex.getCause());
    } else {
      ExceptionUtils.throwUndeclared(ex);
    }
  } finally {
    MDC.clear();
  }
  return uuid.toString();
}
 
Example 16
Source File: WingtipsSpringUtilTest.java    From wingtips with Apache License 2.0 4 votes vote down vote up
private void resetTracing() {
    MDC.clear();
    Tracer.getInstance().unregisterFromThread();
}
 
Example 17
Source File: TdsInit.java    From tds with BSD 3-Clause "New" or "Revised" License 4 votes vote down vote up
@Override
public void destroy() {
  System.out.printf("TdsInit.destroy() is called%n");

  // prefs
  try {
    store.save();
  } catch (IOException ioe) {
    ioe.printStackTrace();
    startupLog.error("TdsInit: Prefs save failed", ioe);
  }

  // background threads
  if (cdmDiskCacheTimer != null)
    cdmDiskCacheTimer.cancel();
  FileCache.shutdown(); // this handles background threads for all instances of FileCache
  DiskCache2.exit(); // this handles background threads for all instances of DiskCache2
  executor.shutdownNow();

  /*
   * try {
   * catalogWatcher.close();
   * } catch (IOException ioe) {
   * ioe.printStackTrace();
   * startupLog.error("catalogWatcher close failed", ioe);
   * }
   */

  // open file caches
  RandomAccessFile.shutdown();
  NetcdfDataset.shutdown();
  NetcdfDatasets.shutdown();

  // memory caches
  GribCdmIndex.shutdown();
  datasetManager.setDatasetTracker(null); // closes the existing tracker

  collectionUpdater.shutdown();
  startupLog.info("TdsInit shutdown");
  MDC.clear();
}
 
Example 18
Source File: AsyncHttpClientHelperTest.java    From riposte with Apache License 2.0 4 votes vote down vote up
private void resetTracingAndMdc() {
    MDC.clear();
    Tracer.getInstance().completeRequestSpan();
}
 
Example 19
Source File: BiFunctionWithTracingTest.java    From wingtips with Apache License 2.0 4 votes vote down vote up
private void resetTracing() {
    MDC.clear();
    Tracer.getInstance().unregisterFromThread();
}
 
Example 20
Source File: PoseidonConsumer.java    From Poseidon with Apache License 2.0 4 votes vote down vote up
private void shutdownAllContext(HystrixRequestContext hystrixRequestContext) {
    RequestContext.shutDown();
    ServiceContext.shutDown();
    hystrixRequestContext.shutdown();
    MDC.clear();
}