Skip to content

Commit cb22b9f

Browse files
dvayanuclaude
andcommitted
add async support to all non-deprecated filters
Enables async servlet support across all active MoSKito filters so they do not block async dispatch chains (e.g. SSE/MCP endpoints). Three deployment paths are covered: web-fragment.xml (<async-supported>true), @webfilter(asyncSupported=true) on each filter class, and FilterRegistrationBean.setAsyncSupported(true) in the Spring Boot 1/2 auto-configurations. Deprecated filters are intentionally excluded. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 582b695 commit cb22b9f

14 files changed

Lines changed: 45 additions & 0 deletions

File tree

moskito-integration/moskito-springboot/src/main/java/net/anotheria/moskito/integration/springboot/MoskitoAutoConfiguration.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public FilterRegistrationBean journeyStarterFilter() {
5050
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
5151
registrationBean.setFilter(new JourneyStarterFilter());
5252
registrationBean.addUrlPatterns("/*");
53+
registrationBean.setAsyncSupported(true);
5354
return registrationBean;
5455
}
5556

@@ -59,6 +60,7 @@ public FilterRegistrationBean asyncSourceTldFilter() {
5960
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
6061
registrationBean.setFilter(new AsyncSourceTldFilter());
6162
registrationBean.addUrlPatterns("/*");
63+
registrationBean.setAsyncSupported(true);
6264
return registrationBean;
6365
}
6466

@@ -68,6 +70,7 @@ public FilterRegistrationBean debugRequestFilter() {
6870
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
6971
registrationBean.setFilter(new DebugRequestFilter());
7072
registrationBean.addUrlPatterns("/*");
73+
registrationBean.setAsyncSupported(true);
7174
return registrationBean;
7275
}
7376

@@ -77,6 +80,7 @@ public FilterRegistrationBean genericMonitoringFilter() {
7780
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
7881
registrationBean.setFilter(new GenericMonitoringFilter());
7982
registrationBean.addUrlPatterns("/*");
83+
registrationBean.setAsyncSupported(true);
8084
return registrationBean;
8185
}
8286

@@ -86,6 +90,7 @@ public FilterRegistrationBean journeyFilter() {
8690
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
8791
registrationBean.setFilter(new JourneyFilter());
8892
registrationBean.addUrlPatterns("/*");
93+
registrationBean.setAsyncSupported(true);
8994
return registrationBean;
9095
}
9196

@@ -95,6 +100,7 @@ public FilterRegistrationBean jSTalkBackFilter() {
95100
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
96101
registrationBean.setFilter(new JSTalkBackFilter());
97102
registrationBean.addUrlPatterns("/*");
103+
registrationBean.setAsyncSupported(true);
98104
return registrationBean;
99105
}
100106

@@ -104,6 +110,7 @@ public FilterRegistrationBean moskitoCommandFilter() {
104110
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
105111
registrationBean.setFilter(new MoskitoCommandFilter());
106112
registrationBean.addUrlPatterns("/*");
113+
registrationBean.setAsyncSupported(true);
107114
return registrationBean;
108115
}
109116

@@ -113,6 +120,7 @@ public FilterRegistrationBean sourceIpSegmentFilter() {
113120
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
114121
registrationBean.setFilter(new SourceIpSegmentFilter());
115122
registrationBean.addUrlPatterns("/*");
123+
registrationBean.setAsyncSupported(true);
116124
return registrationBean;
117125
}
118126

@@ -122,6 +130,7 @@ public FilterRegistrationBean sourceTldFilter() {
122130
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
123131
registrationBean.setFilter(new SourceTldFilter());
124132
registrationBean.addUrlPatterns("/*");
133+
registrationBean.setAsyncSupported(true);
125134
return registrationBean;
126135
}
127136

moskito-integration/moskito-springboot2/src/main/java/net/anotheria/moskito/integration/springboot/MoskitoAutoConfiguration.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public FilterRegistrationBean journeyStarterFilter() {
6969
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
7070
registrationBean.setFilter(new JourneyStarterFilter());
7171
registrationBean.addUrlPatterns("/*");
72+
registrationBean.setAsyncSupported(true);
7273
return registrationBean;
7374
}
7475

@@ -78,6 +79,7 @@ public FilterRegistrationBean asyncSourceTldFilter() {
7879
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
7980
registrationBean.setFilter(new AsyncSourceTldFilter());
8081
registrationBean.addUrlPatterns("/*");
82+
registrationBean.setAsyncSupported(true);
8183
return registrationBean;
8284
}
8385

@@ -87,6 +89,7 @@ public FilterRegistrationBean debugRequestFilter() {
8789
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
8890
registrationBean.setFilter(new DebugRequestFilter());
8991
registrationBean.addUrlPatterns("/*");
92+
registrationBean.setAsyncSupported(true);
9093
return registrationBean;
9194
}
9295

@@ -96,6 +99,7 @@ public FilterRegistrationBean genericMonitoringFilter() {
9699
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
97100
registrationBean.setFilter(new GenericMonitoringFilter());
98101
registrationBean.addUrlPatterns("/*");
102+
registrationBean.setAsyncSupported(true);
99103
return registrationBean;
100104
}
101105

@@ -105,6 +109,7 @@ public FilterRegistrationBean journeyFilter() {
105109
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
106110
registrationBean.setFilter(new JourneyFilter());
107111
registrationBean.addUrlPatterns("/*");
112+
registrationBean.setAsyncSupported(true);
108113
return registrationBean;
109114
}
110115

@@ -114,6 +119,7 @@ public FilterRegistrationBean journeyFilter() {
114119
// FilterRegistrationBean registrationBean = new FilterRegistrationBean();
115120
// registrationBean.setFilter(new JSTalkBackFilter());
116121
// registrationBean.addUrlPatterns("/*");
122+
// registrationBean.setAsyncSupported(true);
117123
// return registrationBean;
118124
// }
119125

@@ -123,6 +129,7 @@ public FilterRegistrationBean moskitoCommandFilter() {
123129
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
124130
registrationBean.setFilter(new MoskitoCommandFilter());
125131
registrationBean.addUrlPatterns("/*");
132+
registrationBean.setAsyncSupported(true);
126133
return registrationBean;
127134
}
128135

@@ -132,6 +139,7 @@ public FilterRegistrationBean sourceIpSegmentFilter() {
132139
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
133140
registrationBean.setFilter(new SourceIpSegmentFilter());
134141
registrationBean.addUrlPatterns("/*");
142+
registrationBean.setAsyncSupported(true);
135143
return registrationBean;
136144
}
137145

@@ -141,6 +149,7 @@ public FilterRegistrationBean sourceTldFilter() {
141149
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
142150
registrationBean.setFilter(new SourceTldFilter());
143151
registrationBean.addUrlPatterns("/*");
152+
registrationBean.setAsyncSupported(true);
144153
return registrationBean;
145154
}
146155

moskito-web/src/main/java/net/anotheria/moskito/web/filters/AsyncSourceTldFilter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import jakarta.servlet.ServletException;
1414
import jakarta.servlet.ServletRequest;
1515
import jakarta.servlet.ServletResponse;
16+
import jakarta.servlet.annotation.WebFilter;
1617
import java.io.IOException;
1718
import java.net.InetAddress;
1819

@@ -23,6 +24,7 @@
2324
* @author lrosenberg
2425
* @since 25.04.13 18:48
2526
*/
27+
@WebFilter(asyncSupported = true)
2628
public class AsyncSourceTldFilter extends MoskitoFilter{
2729
/**
2830
* Limit for the ip length. This limit is simple precaution in case someone is sending constructed source ip header

moskito-web/src/main/java/net/anotheria/moskito/web/filters/DebugRequestFilter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import jakarta.servlet.ServletException;
1010
import jakarta.servlet.ServletRequest;
1111
import jakarta.servlet.ServletResponse;
12+
import jakarta.servlet.annotation.WebFilter;
1213
import jakarta.servlet.http.HttpServletRequest;
1314
import jakarta.servlet.http.HttpSession;
1415
import java.io.IOException;
@@ -21,6 +22,7 @@
2122
*
2223
* @author asamoilich.
2324
*/
25+
@WebFilter(asyncSupported = true)
2426
public class DebugRequestFilter implements Filter {
2527

2628
/**

moskito-web/src/main/java/net/anotheria/moskito/web/filters/GenericMonitoringFilter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import jakarta.servlet.ServletException;
2424
import jakarta.servlet.ServletRequest;
2525
import jakarta.servlet.ServletResponse;
26+
import jakarta.servlet.annotation.WebFilter;
2627
import jakarta.servlet.http.HttpServletRequest;
2728
import jakarta.servlet.http.HttpServletResponse;
2829
import java.io.IOException;
@@ -38,6 +39,7 @@
3839
* @author lrosenberg
3940
* @since 26.04.16 19:04
4041
*/
42+
@WebFilter(asyncSupported = true)
4143
public class GenericMonitoringFilter implements Filter, IStatsProducer {
4244
/**
4345
* Logger instance.

moskito-web/src/main/java/net/anotheria/moskito/web/filters/JSTalkBackFilter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import jakarta.servlet.ServletException;
1818
import jakarta.servlet.ServletRequest;
1919
import jakarta.servlet.ServletResponse;
20+
import jakarta.servlet.annotation.WebFilter;
2021
import jakarta.servlet.http.HttpServletRequest;
2122
import jakarta.servlet.http.HttpServletResponse;
2223
import java.io.IOException;
@@ -28,6 +29,7 @@
2829
* @author lrosenberg
2930
* @since 15.09.13 22:44
3031
*/
32+
@WebFilter(asyncSupported = true)
3133
public class JSTalkBackFilter implements Filter {
3234
/**
3335
* Parameter name for the init parameter for the limit of dynamic case names (number of names) in the filter config. If the number of cases will exceed this limit,

moskito-web/src/main/java/net/anotheria/moskito/web/filters/JourneyFilter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,15 @@
2626
import jakarta.servlet.ServletRequest;
2727
import jakarta.servlet.ServletResponse;
2828
import jakarta.servlet.http.HttpServletRequest;
29+
import jakarta.servlet.annotation.WebFilter;
2930
import jakarta.servlet.http.HttpSession;
3031
import java.io.IOException;
3132

3233

3334
/**
3435
* This filter checks if the journey tracing is active for current http session and if so switches the call tracing on.
3536
*/
37+
@WebFilter(asyncSupported = true)
3638
public class JourneyFilter implements Filter {
3739

3840
/**

moskito-web/src/main/java/net/anotheria/moskito/web/filters/JourneyStarterFilter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import jakarta.servlet.ServletRequest;
1616
import jakarta.servlet.ServletResponse;
1717
import jakarta.servlet.http.HttpServletRequest;
18+
import jakarta.servlet.annotation.WebFilter;
1819
import jakarta.servlet.http.HttpSession;
1920
import java.io.IOException;
2021

@@ -26,6 +27,7 @@
2627
* @author lrosenberg
2728
* @since 15.10.14 22:41
2829
*/
30+
@WebFilter(asyncSupported = true)
2931
public class JourneyStarterFilter implements Filter{
3032

3133
/**

moskito-web/src/main/java/net/anotheria/moskito/web/filters/MoskitoCommandFilter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@
88
import jakarta.servlet.ServletException;
99
import jakarta.servlet.ServletRequest;
1010
import jakarta.servlet.ServletResponse;
11+
import jakarta.servlet.annotation.WebFilter;
1112
import java.io.IOException;
1213
import java.util.Map;
1314

1415

1516
/**
1617
* This filter checks for commands that can be executed by MoSKito and forwards them to the responsbile components.
1718
*/
19+
@WebFilter(asyncSupported = true)
1820
public class MoskitoCommandFilter implements Filter{
1921
/**
2022
* Name of the command parameter (default).

moskito-web/src/main/java/net/anotheria/moskito/web/filters/SourceIpSegmentFilter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import jakarta.servlet.ServletRequest;
66
import jakarta.servlet.ServletResponse;
7+
import jakarta.servlet.annotation.WebFilter;
78
import jakarta.servlet.http.HttpServletRequest;
89

910
/**
@@ -12,6 +13,7 @@
1213
* @author lrosenberg
1314
* @since 25.04.13 18:21
1415
*/
16+
@WebFilter(asyncSupported = true)
1517
public class SourceIpSegmentFilter extends MoskitoFilter {
1618
/**
1719
* Limit for the ip length. This limit is simple precaution in case someone is sending constructed source ip header

0 commit comments

Comments
 (0)