diff --git a/.gitignore b/.gitignore index f6fb9fd8c..063fbcfe5 100644 --- a/.gitignore +++ b/.gitignore @@ -21,5 +21,6 @@ _site/ /spring-cloud-sleuth-core/nbactions.xml jmh-result.csv pom.xml.versionsBackup +.vscode .sts4-cache -_includes \ No newline at end of file +_includes diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceScheduledThreadPoolExecutor.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceScheduledThreadPoolExecutor.java index ce29e6eb0..2a72377b2 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceScheduledThreadPoolExecutor.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceScheduledThreadPoolExecutor.java @@ -363,9 +363,7 @@ class LazyTraceScheduledThreadPoolExecutor extends ScheduledThreadPoolExecutor { } @Override - @Deprecated public void finalize() { - ReflectionUtils.invokeMethod(this.finalize, this.delegate); } @Override diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceScheduledThreadPoolExecutorTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceScheduledThreadPoolExecutorTests.java new file mode 100644 index 000000000..a5cf2e9ef --- /dev/null +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/async/LazyTraceScheduledThreadPoolExecutorTests.java @@ -0,0 +1,48 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.sleuth.instrument.async; + +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.atomic.AtomicBoolean; + +import org.assertj.core.api.BDDAssertions; +import org.junit.Test; +import org.mockito.BDDMockito; + +import org.springframework.beans.factory.BeanFactory; + +public class LazyTraceScheduledThreadPoolExecutorTests { + + @Test + public void should_not_finalize_the_delegate_since_its_a_shared_instance() { + AtomicBoolean wasCalled = new AtomicBoolean(); + ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(10) { + @Override + protected void finalize() { + super.finalize(); + wasCalled.set(true); + } + }; + BeanFactory beanFactory = BDDMockito.mock(BeanFactory.class); + + new LazyTraceScheduledThreadPoolExecutor(10, beanFactory, executor).finalize(); + + BDDAssertions.then(wasCalled).isFalse(); + BDDAssertions.then(executor.isShutdown()).isFalse(); + } + +}