Skip to content

Commit 4f7519a

Browse files
authored
Fixed stopping EI instances in Tomcat issue. (#267)
* Fixed stopping EI instances in Tomcat issue. * Added a predestruct annotation function that closes the MongdbHandler MongoDb connection. * Removed scheduled annotations in App class to resolve a hanging thread in tomcat. * Fixed so Waitlist worker TaskScheduler closes all threads. * Made Schedule task executor thread pool size configurable.
1 parent 2eb460e commit 4f7519a

File tree

4 files changed

+31
-10
lines changed

4 files changed

+31
-10
lines changed

src/main/java/com/ericsson/ei/App.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import java.util.ArrayList;
2020
import java.util.Collections;
2121
import java.util.List;
22+
import java.util.concurrent.Executor;
23+
import java.util.concurrent.Executors;
2224

2325
import org.springframework.beans.factory.annotation.Autowired;
2426
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
@@ -28,24 +30,37 @@
2830
import org.springframework.boot.autoconfigure.SpringBootApplication;
2931
import org.springframework.boot.builder.SpringApplicationBuilder;
3032
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
31-
import org.springframework.context.annotation.ComponentScan;
33+
import org.springframework.context.annotation.Bean;
3234
import org.springframework.context.support.SimpleThreadScope;
35+
import org.springframework.core.env.Environment;
3336
import org.springframework.scheduling.annotation.EnableAsync;
3437
import org.springframework.scheduling.annotation.EnableScheduling;
35-
36-
import com.ericsson.ei.config.CheckEIConfigurations;
37-
import com.ericsson.ei.rules.RulesHandler;
38+
import org.springframework.scheduling.annotation.SchedulingConfigurer;
39+
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
3840

3941

4042
@SpringBootApplication
4143
@EnableAsync
4244
@EnableScheduling
43-
public class App extends SpringBootServletInitializer {
45+
public class App extends SpringBootServletInitializer implements SchedulingConfigurer {
46+
47+
@Autowired
48+
Environment env;
4449

4550
@Override
4651
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
4752
return application.sources(App.class);
4853
}
54+
55+
@Override
56+
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
57+
taskRegistrar.setScheduler(taskExecutor());
58+
}
59+
60+
@Bean(destroyMethod="shutdown")
61+
public Executor taskExecutor() {
62+
return Executors.newScheduledThreadPool(Integer.parseInt(env.getProperty("scheduled.threadpool.size")));
63+
}
4964

5065
public static void main(String[] args) {
5166

src/main/java/com/ericsson/ei/mongodbhandler/MongoDBHandler.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.concurrent.TimeUnit;
2020

2121
import javax.annotation.PostConstruct;
22+
import javax.annotation.PreDestroy;
2223

2324
import org.apache.commons.lang3.StringUtils;
2425
import org.bson.Document;
@@ -65,6 +66,11 @@ public class MongoDBHandler {
6566
public void init() {
6667
createConnection();
6768
}
69+
70+
@PreDestroy
71+
public void close() {
72+
mongoClient.close();
73+
}
6874

6975
// Establishing the connection to mongodb and creating a collection
7076
private void createConnection() {

src/main/java/com/ericsson/ei/waitlist/WaitListWorker.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,6 @@ public class WaitListWorker {
5959
@Autowired
6060
private EventToObjectMapHandler eventToObjectMapHandler;
6161

62-
@Bean
63-
public TaskScheduler taskScheduler() {
64-
return new ConcurrentTaskScheduler();
65-
}
66-
6762
@Scheduled(initialDelayString = "${waitlist.initialDelayResend}", fixedRateString = "${waitlist.fixedRateResend}")
6863
public void run() {
6964
List<String> documents = waitListStorageHandler.getWaitList();

src/main/resources/application.properties

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,11 @@ testaggregated.enabled: false
9595
threads.corePoolSize: 100
9696
threads.queueCapacity: 5000
9797
threads.maxPoolSize: 150
98+
99+
# WaitList-worker and Scheduling task executor thread settings
100+
scheduled.threadpool.size: 100
101+
102+
98103
# name of the collection where missed notifications are stored
99104
missedNotificationCollectionName: Notification
100105
# name of the database where missed notifications are stored

0 commit comments

Comments
 (0)