RE: Tomcat 9.0.65 suspected memory leak

2023-02-10 Thread Chen Levy
Thanks Mark, workaround seem to be working
Chen

> -Original Message-
> From: Mark Thomas 
> Sent: Thursday, February 9, 2023 12:41
> To: users@tomcat.apache.org
> Subject: Re: Tomcat 9.0.65 suspected memory leak
> 
> On 09/02/2023 13:25, Mark Thomas wrote:
> > On 09/02/2023 13:04, Mark Thomas wrote:
> >> On 04/02/2023 22:06, Chen Levy wrote:
> >>
> >>> Mark, I believe a change in Tomcat 9.0.65 causes it to accumulate
> >>> open connections:
> >>> I took a fresh Tomcat, unzipped and modified server.xml with only
> >>> the
> >>> following:
> >>> 1. Changed port 8080 to port 80
> >>> 2. Changed port 8443 to port 443
> >>> 3. Uncommented the nio connector and added the snippet
> >>>      >>> className="org.apache.coyote.http2.Http2Protocol" />
> >>>  
> >>>   >>> certificateKeystoreFile="conf/tomcat_noroot.p12"
> >>>   certificateKeyAlias="..."
> >>>   certificateKeystorePassword="..."
> >>>   certificateKeystoreType="PKCS12"/>
> >>>  
> >>>
> >>> I used Chrome to call the default index.html with Wireshark in the
> >>> middle:
> >>> With 9.0.63 - 20 seconds after the last data frame, came a GOAWAY
> >>> from the server.
> >>> With 9.0.65 - No GOAWAY was sent, and the server and client kept
> >>> ACKing each other.
> >>>
> >>> Tomcat 9.0.71 and 10.1.5 behaved similarly - no GOAWAY was sent.
> >>>
> >>> Test was conducted with:
> >>> Wireshark Version 4.0.3 (v4.0.3-0-gc552f74cdc23) Chrome Version
> >>> 109.0.5414.120 JDK 17.0.6+10 Windows 11
> >>
> >> Thanks for the reproduction details. I'll take a look now.
> >
> > A quick workaround is to configure useAsyncIO="false" on the Connector.
> 
> Fixed for the next round of releases.
> 
> Mark
> 
> -
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org



Re: Tomcat 9.0.65 suspected memory leak

2023-02-09 Thread Mark Thomas

On 09/02/2023 13:25, Mark Thomas wrote:

On 09/02/2023 13:04, Mark Thomas wrote:

On 04/02/2023 22:06, Chen Levy wrote:

Mark, I believe a change in Tomcat 9.0.65 causes it to accumulate 
open connections:
I took a fresh Tomcat, unzipped and modified server.xml with only the 
following:

1. Changed port 8080 to port 80
2. Changed port 8443 to port 443
3. Uncommented the nio connector and added the snippet
    className="org.apache.coyote.http2.Http2Protocol" />

 
 certificateKeystoreFile="conf/tomcat_noroot.p12"

  certificateKeyAlias="..."
  certificateKeystorePassword="..."
  certificateKeystoreType="PKCS12"/>
 

I used Chrome to call the default index.html with Wireshark in the 
middle:
With 9.0.63 - 20 seconds after the last data frame, came a GOAWAY 
from the server.
With 9.0.65 - No GOAWAY was sent, and the server and client kept 
ACKing each other.


Tomcat 9.0.71 and 10.1.5 behaved similarly - no GOAWAY was sent.

Test was conducted with:
Wireshark Version 4.0.3 (v4.0.3-0-gc552f74cdc23)
Chrome Version 109.0.5414.120
JDK 17.0.6+10
Windows 11


Thanks for the reproduction details. I'll take a look now.


A quick workaround is to configure useAsyncIO="false" on the Connector.


Fixed for the next round of releases.

Mark

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



Re: Tomcat 9.0.65 suspected memory leak

2023-02-09 Thread Mark Thomas

On 09/02/2023 13:04, Mark Thomas wrote:

On 04/02/2023 22:06, Chen Levy wrote:

Mark, I believe a change in Tomcat 9.0.65 causes it to accumulate open 
connections:
I took a fresh Tomcat, unzipped and modified server.xml with only the 
following:

1. Changed port 8080 to port 80
2. Changed port 8443 to port 443
3. Uncommented the nio connector and added the snippet
    className="org.apache.coyote.http2.Http2Protocol" />

 
 certificateKeystoreFile="conf/tomcat_noroot.p12"

  certificateKeyAlias="..."
  certificateKeystorePassword="..."
  certificateKeystoreType="PKCS12"/>
 

I used Chrome to call the default index.html with Wireshark in the 
middle:
With 9.0.63 - 20 seconds after the last data frame, came a GOAWAY from 
the server.
With 9.0.65 - No GOAWAY was sent, and the server and client kept 
ACKing each other.


Tomcat 9.0.71 and 10.1.5 behaved similarly - no GOAWAY was sent.

Test was conducted with:
Wireshark Version 4.0.3 (v4.0.3-0-gc552f74cdc23)
Chrome Version 109.0.5414.120
JDK 17.0.6+10
Windows 11


Thanks for the reproduction details. I'll take a look now.


A quick workaround is to configure useAsyncIO="false" on the Connector.

Mark

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



Re: Tomcat 9.0.65 suspected memory leak

2023-02-09 Thread Mark Thomas

On 04/02/2023 22:06, Chen Levy wrote:


Mark, I believe a change in Tomcat 9.0.65 causes it to accumulate open 
connections:
I took a fresh Tomcat, unzipped and modified server.xml with only the following:
1. Changed port 8080 to port 80
2. Changed port 8443 to port 443
3. Uncommented the nio connector and added the snippet

 
 
 

I used Chrome to call the default index.html with Wireshark in the middle:
With 9.0.63 - 20 seconds after the last data frame, came a GOAWAY from the 
server.
With 9.0.65 - No GOAWAY was sent, and the server and client kept ACKing each 
other.

Tomcat 9.0.71 and 10.1.5 behaved similarly - no GOAWAY was sent.

Test was conducted with:
Wireshark Version 4.0.3 (v4.0.3-0-gc552f74cdc23)
Chrome Version 109.0.5414.120
JDK 17.0.6+10
Windows 11


Thanks for the reproduction details. I'll take a look now.

Mark

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



RE: Tomcat 9.0.65 suspected memory leak

2023-02-04 Thread Chen Levy

> -Original Message-
> From: Mark Thomas 
> Sent: Monday, September 19, 2022 13:02
> To: users@tomcat.apache.org
> Subject: Re: Tomcat 9.0.65 suspected memory leak
> 
> On 15/09/2022 14:11, Chen Levy wrote:
> > Hello Experts
> >
> > We’ve recently upgraded some of our production servers to Tomcat
> > 9.0.65; every upgraded server crashed with java.lang.OutOfMemoryError
> > within an hour or so under load.
> >
> > The exact same setup (same application, Linux kernel, Java version
> > etc.) with Tomcat 9.0.63 does not exhibit this issue.
> >
> > A heap-dump through MAT gave the following leak suspect (leak report
> > attached):
> >
> > “
> >
> > 14,364 instances of
> > "org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper", loaded by
> > "java.net.URLClassLoader @ 0x6be257090" occupy 4,489,221,944 (91.95%)
> bytes.
> >
> > These instances are referenced from one instance of
> > "java.util.concurrent.ConcurrentHashMap$Node[]", loaded by " > class loader>", which occupies 590,736 (0.01%) bytes.
> >
> > Keywords
> >
> >      org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper
> >
> >      java.net.URLClassLoader @ 0x6be257090
> >
> >      java.util.concurrent.ConcurrentHashMap$Node[]
> >
> > “
> >
> > Please let me know if I should provide additional information
> 
> That looks like 14k current connections which isn't unreasonable for a
> Tomcat instance under load.
> 
> There are connector related changes between 9.0.63 and 9.0.65 but nothing
> that is obviously related to the issue you are seeing.
> 
> At this point there isn't enough information to differentiate between:
> - a regression introduced in Tomcat between 9.0.63 and 9.0.65
> - a change in Tomcat between 9.0.63 and 9.0.65 that exposed a bug in the
>deployed web application
> - a change in Tomcat between 9.0.63 and 9.0.65 that triggered an
>increase memory usage sufficient to trigger an OOME in your
>environment
> 
> What we would need to investigate this further is a test case that
> demonstrates a leak. It doesn't have to trigger an OOME - it just has to
> demonstrate the JVM retaining references to objects you'd expect to have
> been eligible for GC. If you can reduce it to a single request even better.
> 
> Mark


Mark, I believe a change in Tomcat 9.0.65 causes it to accumulate open 
connections:
I took a fresh Tomcat, unzipped and modified server.xml with only the following:
1. Changed port 8080 to port 80
2. Changed port 8443 to port 443
3. Uncommented the nio connector and added the snippet
   




I used Chrome to call the default index.html with Wireshark in the middle:
With 9.0.63 - 20 seconds after the last data frame, came a GOAWAY from the 
server.
With 9.0.65 - No GOAWAY was sent, and the server and client kept ACKing each 
other.

Tomcat 9.0.71 and 10.1.5 behaved similarly - no GOAWAY was sent.

Test was conducted with:
Wireshark Version 4.0.3 (v4.0.3-0-gc552f74cdc23)
Chrome Version 109.0.5414.120
JDK 17.0.6+10
Windows 11

Chen


RE: Tomcat 9.0.65

2022-12-26 Thread alik alikov
Mark please answer me I really can't see your message when I open it, and how 
can I send you needed information with normally formatting bec yours mail bot 
formating it with escaping line breaks
21.12.2022, 13:38, Mark Thomas < mailto:ma...@apache.org ma...@apache.org >


RE: Tomcat 9.0.65

2022-12-26 Thread alik alikov
Can you help me with my problem?
21.12.2022, 13:38, Mark Thomas < mailto:ma...@apache.org ma...@apache.org >


RE: Tomcat 9.0.65 trailing slashes redirects

2022-12-22 Thread alik alikov
private Context addWebapp(final Host host, final String url, final String name, 
final String path, final PluginDescriptor pluginDescriptor, final 
AddContextListener contextAddListened) { silence(host, url); final 
PluginManager manager = PluginManager.lookup(getClass().getClassLoader()); 
final Context ctx = new StandardContext(); ctx.setName(name); ctx.setPath(url); 
ctx.setDocBase(path); ctx.setParentClassLoader( 
manager.getPluginClassLoader(pluginDescriptor)); //ctx.setLoader(); // 
disabling standard WebSockets service initializer to use it manually later on 
ctx.setContainerSciFilter(Pattern.quote(WsSci.class.getName())); final 
PluginJarScanner jarScanner = new PluginJarScanner(); 
jarScanner.setPlugin(pluginDescriptor); jarScanner.setScanClassPath(false); 
ctx.setJarScanner(jarScanner); ctx.addLifecycleListener(new WebXmlListener()); 
final ContextConfig ctxCfg = new ContextConfig(); 
ctx.addLifecycleListener(ctxCfg); // prevent it from looking ( if it finds one 
- it'll have dup error ) ctxCfg.setDefaultWebXml(tomcat.noDefaultWebXmlPath()); 
if (contextAddListened != null) { contextAddListened.beforeAdd(ctx); } if (host 
== null) { tomcat.getHost().addChild(ctx); } else { host.addChild(ctx); } if 
(contextAddListened != null) { contextAddListened.afterAdd(ctx); } return ctx;
.
21.12.2022, 13:38, Tomcat Users List < mailto:users@tomcat.apache.org 
users@tomcat.apache.org >


RE: Tomcat 9.0.65

2022-12-22 Thread alik alikov
.
21.12.2022, 13:38, Tomcat Users List < mailto:users@tomcat.apache.org 
users@tomcat.apache.org >


	Main lundagrossisten site
	lundagrossisten.se web application
	
		1
		
			0
		
	

	
		client-error-logging-servlet
		com.gridnine.platform.server.lundase.web.servlet.ClientErrorLoggingServlet
		
	
	
		client-error-logging-servlet
		/client-error/*
	

	
		warehouses-servlet
		com.gridnine.platform.server.lundase.web.servlet.WarehousesServlet
		
	
	
		warehouses-servlet
		/warehouses/*
	

	
		propsforrent-servlet
		com.gridnine.platform.server.lundase.web.servlet.PropertiesForRentServlet
		
	
	
		propsforrent-servlet
		/properties-for-rent/*
	

	
		calendar-events-servlet
		com.gridnine.platform.server.lundase.web.servlet.CalendarEventsServlet
		
	
	
		calendar-events-servlet
		/about/events/*
	

	
		update-catalogue-servlet
		com.gridnine.platform.server.lundase.web.servlet.UpdateCatalogueServlet
		
	
	
		update-catalogue-servlet
		/ping/*
	

	
		catalogue-servlet
		com.gridnine.platform.server.lundase.web.servlet.CatalogueServlet
		
		
			catalogue-type
			MAIN
		
	
	
		catalogue-servlet
		/catalogue/*
	

	
		binary-data-servlet
		com.gridnine.platform.server.lundase.web.servlet.BinaryDataServlet
		
	
	
		binary-data-servlet
		/binary/*
	

	
		content-servlet
		com.gridnine.platform.server.lundase.web.servlet.ContentServlet
		
	
	
		content-servlet
		/content/*
	

	
		cabinet-servlet
		com.gridnine.platform.server.lundase.web.servlet.CabinetServlet
		
	
	
		cabinet-servlet
		/lundaprogrammet/*
	

	
		jsp
		*.html
	
	
		jsp
		/source/assets/css/aggregate.css
	

	
		auth-filter
		com.gridnine.platform.server.lundase.web.servlet.AuthFilter
		
	
	
		auth-filter
		/*
	

	
		/error.html
	
	
	UTF-8


-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

RE: Tomcat 9.0.65

2022-12-22 Thread alik alikov
And sometimes I don't see your message when I opened them
21.12.2022, 13:38, Mark Thomas < mailto:ma...@apache.org ma...@apache.org >


RE: Tomcat 9.0.65

2022-12-22 Thread alik alikov
Hello can I attach the files to these messages?
21.12.2022, 13:38, Mark Thomas < mailto:ma...@apache.org ma...@apache.org >


Re: Tomcat 9.0.65

2022-12-21 Thread Mark Thomas
The information you posted is missing line breaks and is extremely 
difficult to parse. Please re-post with line breaks.


Mark

On 21/12/2022 08:02, alik alikov wrote:

  Main lundagrossisten site lundagrossisten.se web application  1  0client-error-logging-servlet com.gridnine.platform.server.lundase.web.servlet.ClientErrorLoggingServletclient-error-logging-servlet /client-error/*   warehouses-servlet com.gridnine.platform.server.lundase.web.servlet.WarehousesServlet
warehouses-servlet /warehouses/*   propsforrent-servlet com.gridnine.platform.server.lundase.web.servlet.PropertiesForRentServletpropsforrent-servlet /properties-for-rent/*   calendar-events-servlet com.gridnine.platform.server.lundase.web.servlet.CalendarEventsServletcalendar-events-servlet /about/events/*   update-catalogue-servlet 
com.gridnine.platform.server.lundase.web.servlet.UpdateCatalogueServletupdate-catalogue-servlet /ping/*   catalogue-servlet com.gridnine.platform.server.lundase.web.servlet.CatalogueServlet   catalogue-type MAINcatalogue-servlet /catalogue/*   binary-data-servlet com.gridnine.platform.server.lundase.web.servlet.BinaryDataServlet
binary-data-servlet /binary/*   content-servlet com.gridnine.platform.server.lundase.web.servlet.ContentServletcontent-servlet /content/*   cabinet-servlet com.gridnine.platform.server.lundase.web.servlet.CabinetServletcabinet-servlet /lundaprogrammet/*   jsp *.html   
jsp /source/assets/css/aggregate.css   auth-filter com.gridnine.platform.server.lundase.web.servlet.AuthFilterauth-filter /*   /error.html  UTF-8 
20.12.2022, 15:11, Mark Thomas < mailto:ma...@apache.org ma...@apache.org >
You'll need to provide: - The httpd proxy configuration - the context path - the servlet mapping(s) - the code that generates the 
problematic link - the URL of the request that triggers the problem Mark On 20/12/2022 07:37, alik alikov wrote: > Hello I have some 
problems with trailing slashes. > When I try to get to the page for example: "about/page" tomcat understands that it is 
necessary to add a slash and adds it, however, he also adds the name of the root folder to this, that is, the url 
"lundase/about/page/" turns out, and any requests to our server via apache are proxied with the addition of "lundase", 
so it turns out that we are accessing the application on request "lundase/lundase/about/page/" which results in a 404 status. > 
I googled it and found two properties: > context.setMapperContextRootRedirectEnabled(false) 
context.setMapperDirectoryRedirectEnabled(false) > And tryed to play with them, however, it's not resolve my problem please can you help 
me with it? > . > - To unsubscribe, e-mail: /compose/ 
users-unsubscr...@tomcat.apache.org For additional commands, e-mail: /compose/ users-h...@tomcat.apache.org



RE: Tomcat 9.0.65

2022-12-21 Thread alik alikov
  Main 
lundagrossisten site lundagrossisten.se web 
application  1 
 0   
 client-error-logging-servlet 
com.gridnine.platform.server.lundase.web.servlet.ClientErrorLoggingServlet

client-error-logging-servlet 
/client-error/*   
warehouses-servlet 
com.gridnine.platform.server.lundase.web.servlet.WarehousesServlet

warehouses-servlet 
/warehouses/*   
propsforrent-servlet 
com.gridnine.platform.server.lundase.web.servlet.PropertiesForRentServlet

propsforrent-servlet 
/properties-for-rent/*   
calendar-events-servlet 
com.gridnine.platform.server.lundase.web.servlet.CalendarEventsServlet

calendar-events-servlet 
/about/events/*   
update-catalogue-servlet 
com.gridnine.platform.server.lundase.web.servlet.UpdateCatalogueServlet

update-catalogue-servlet 
/ping/*   
catalogue-servlet 
com.gridnine.platform.server.lundase.web.servlet.CatalogueServlet
   catalogue-type 
MAIN
catalogue-servlet 
/catalogue/*   
binary-data-servlet 
com.gridnine.platform.server.lundase.web.servlet.BinaryDataServlet

binary-data-servlet 
/binary/*   
content-servlet 
com.gridnine.platform.server.lundase.web.servlet.ContentServlet 
   
content-servlet 
/content/*   
cabinet-servlet 
com.gridnine.platform.server.lundase.web.servlet.CabinetServlet 
   
cabinet-servlet 
/lundaprogrammet/*  
 jsp 
*.html   
jsp 
/source/assets/css/aggregate.css  
 auth-filter 
com.gridnine.platform.server.lundase.web.servlet.AuthFilter 
   
auth-filter /* 
  /error.html  
UTF-8 
20.12.2022, 15:11, Mark Thomas < mailto:ma...@apache.org ma...@apache.org >
You'll need to provide: - The httpd proxy configuration - the context path - 
the servlet mapping(s) - the code that generates the problematic link - the URL 
of the request that triggers the problem Mark On 20/12/2022 07:37, alik alikov 
wrote: > Hello I have some problems with trailing slashes. > When I try to get 
to the page for example: "about/page" tomcat understands that it is necessary 
to add a slash and adds it, however, he also adds the name of the root folder 
to this, that is, the url "lundase/about/page/" turns out, and any requests to 
our server via apache are proxied with the addition of "lundase", so it turns 
out that we are accessing the application on request 
"lundase/lundase/about/page/" which results in a 404 status. > I googled it and 
found two properties: > context.setMapperContextRootRedirectEnabled(false) 
context.setMapperDirectoryRedirectEnabled(false) > And tryed to play with them, 
however, it's not resolve my problem please can you help me with it? > . > 
- To 
unsubscribe, e-mail: /compose/ users-unsubscr...@tomcat.apache.org For 
additional commands, e-mail: /compose/ users-h...@tomcat.apache.org


RE: Tomcat 9.0.65

2022-12-20 Thread alik alikov
for local lunch we use proxy on js: proxy: {'/api/': { target: 
'http://localhost:8080/', changeOrigin: false, },'/': { target: 
'http://localhost:8080/lundase', changeOrigin: false } }, for normal lunch we 
use apache2.conf: RewriteCond %{REQUEST_URI} 
^(/api/|/mapi/|/binary/|/rpc/invoker/) RewriteRule  ^/rpc/invoker/(.*)$ 
   http://localhost:9090/rpc/invoker/$1 [NC,P,L] 
RewriteRule  ^/api/(.*)$
http://localhost:9090/api/$1 [NC,P,L] RewriteRule  ^/mapi/(.*)$ 
  http://localhost:9090/mapi/$1 [NC,P,L] #RewriteRule  
^/lundase/(.*)$http://localhost:9090/lundase/$1 
[NC,P,L] #RewriteRule ^/binary/(.*)$ 
http://localhost:9090/lundase/binary/$1 [NC,P,L] #RewriteRule 
^/content/(.*)$
http://localhost:9090/lundase/content/$1 [NC,P,L] #RewriteRule ^.*/[^./]+$  
  $0/ [NC,R=301,L] RewriteRule  ^(.*)$  
   http://localhost:9090/lundase/$1 [NC,P,L]
20.12.2022, 15:11, Mark Thomas < mailto:ma...@apache.org ma...@apache.org >
You'll need to provide: - The httpd proxy configuration - the context path - 
the servlet mapping(s) - the code that generates the problematic link - the URL 
of the request that triggers the problem Mark On 20/12/2022 07:37, alik alikov 
wrote: > Hello I have some problems with trailing slashes. > When I try to get 
to the page for example: "about/page" tomcat understands that it is necessary 
to add a slash and adds it, however, he also adds the name of the root folder 
to this, that is, the url "lundase/about/page/" turns out, and any requests to 
our server via apache are proxied with the addition of "lundase", so it turns 
out that we are accessing the application on request 
"lundase/lundase/about/page/" which results in a 404 status. > I googled it and 
found two properties: > context.setMapperContextRootRedirectEnabled(false) 
context.setMapperDirectoryRedirectEnabled(false) > And tryed to play with them, 
however, it's not resolve my problem please can you help me with it? > . > 
- To 
unsubscribe, e-mail: /compose/ users-unsubscr...@tomcat.apache.org For 
additional commands, e-mail: /compose/ users-h...@tomcat.apache.org


RE: Tomcat 9.0.65

2022-12-20 Thread alik alikov
private Context addWebapp(final Host host, final String url, final String name, 
final String path, final PluginDescriptor pluginDescriptor, final 
AddContextListener contextAddListened) { silence(host, url); final 
PluginManager manager = PluginManager.lookup(getClass().getClassLoader()); 
final Context ctx = new StandardContext(); ctx.setName(name); ctx.setPath(url); 
ctx.setDocBase(path); ctx.setParentClassLoader( 
manager.getPluginClassLoader(pluginDescriptor)); //ctx.setLoader(); // 
disabling standard WebSockets service initializer to use it manually later on 
ctx.setContainerSciFilter(Pattern.quote(WsSci.class.getName())); final 
PluginJarScanner jarScanner = new PluginJarScanner(); 
jarScanner.setPlugin(pluginDescriptor); jarScanner.setScanClassPath(false); 
ctx.setJarScanner(jarScanner); ctx.addLifecycleListener(new WebXmlListener()); 
final ContextConfig ctxCfg = new ContextConfig(); 
ctx.addLifecycleListener(ctxCfg); // prevent it from looking ( if it finds one 
- it'll have dup error ) ctxCfg.setDefaultWebXml(tomcat.noDefaultWebXmlPath()); 
if (contextAddListened != null) { contextAddListened.beforeAdd(ctx); } if (host 
== null) { tomcat.getHost().addChild(ctx); } else { host.addChild(ctx); } if 
(contextAddListened != null) { contextAddListened.afterAdd(ctx); } return ctx; 
} public static class WebXmlListener extends DefaultWebXmlListener { @Override 
public void lifecycleEvent(final LifecycleEvent event) { 
super.lifecycleEvent(event); if 
(Lifecycle.BEFORE_START_EVENT.equals(event.getType())) { final Context ctx = 
(Context) event.getLifecycle(); final Wrapper servlet = (Wrapper) 
ctx.findChild("jsp"); servlet.addInitParameter("compilerSourceVM", "1.8"); 
servlet.addInitParameter("compilerTargetVM", "1.8"); } } } Structure to 
resource : webapps -> lundase -> about -> aboutus -> index.html index.html: <%@ 
page session="false" pageEncoding="UTF-8" 
import="com.gridnine.platform.server.lundase.web.content.*" 
import="com.gridnine.platform.common.lundase.model.content.*" %><% MetaVO meta 
= SiteMetadataHelper.getStaticMeta(MainSitePage.ABOUT_HOME); %>
 Problems url localhost:9000/about/aboutus tomcat redirected to 
localhost:9000/lundase/about/aboutus/
20.12.2022, 15:11, Mark Thomas < mailto:ma...@apache.org ma...@apache.org >
You'll need to provide: - The httpd proxy configuration - the context path - 
the servlet mapping(s) - the code that generates the problematic link - the URL 
of the request that triggers the problem Mark On 20/12/2022 07:37, alik alikov 
wrote: > Hello I have some problems with trailing slashes. > When I try to get 
to the page for example: "about/page" tomcat understands that it is necessary 
to add a slash and adds it, however, he also adds the name of the root folder 
to this, that is, the url "lundase/about/page/" turns out, and any requests to 
our server via apache are proxied with the addition of "lundase", so it turns 
out that we are accessing the application on request 
"lundase/lundase/about/page/" which results in a 404 status. > I googled it and 
found two properties: > context.setMapperContextRootRedirectEnabled(false) 
context.setMapperDirectoryRedirectEnabled(false) > And tryed to play with them, 
however, it's not resolve my problem please can you help me with it? > . > 
- To 
unsubscribe, e-mail: /compose/ users-unsubscr...@tomcat.apache.org For 
additional commands, e-mail: /compose/ users-h...@tomcat.apache.org


Re: Tomcat 9.0.65

2022-12-20 Thread Mark Thomas

You'll need to provide:

- The httpd proxy configuration
- the context path
- the servlet mapping(s)
- the code that generates the problematic link
- the URL of the request that triggers the problem

Mark


On 20/12/2022 07:37, alik alikov wrote:

Hello I have some problems with trailing slashes.
When I try to get to the page for example: "about/page" tomcat understands that it is necessary to add a 
slash and adds it, however, he also adds the name of the root folder to this, that is, the url 
"lundase/about/page/" turns out, and any requests to our server via apache are proxied with the addition of 
"lundase", so it turns out that we are accessing the application on request 
"lundase/lundase/about/page/" which results in a 404 status.
I googled it and found two properties:
context.setMapperContextRootRedirectEnabled(false) 
context.setMapperDirectoryRedirectEnabled(false)
And tryed to play with them, however, it's not resolve my problem please can 
you help me with it?
.



-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



RE: Tomcat 9.0.65 Failed stop jpf application in shell mode

2022-12-12 Thread alik alikov
Thanks a lot it's work
12.12.2022, 11:00, Mark Thomas < mailto:ma...@apache.org ma...@apache.org >
On 12/12/2022 04:40, alik alikov wrote: > When I try to shut down the 
application in the IDE console by 'q' application doesn't stopped. > > Thread 
Dump in attachments. > > Console log: > > dec 08, 2022 12:59:21 PM 
org.apache.coyote.AbstractProtocol init > INFO: Initializing ProtocolHandler 
["http-nio2-8080"] > dec 08, 2022 12:59:21 PM 
org.apache.tomcat.util.net.Nio2Endpoint bind > WARNING: The NIO2 connector 
requires an exclusive executor to operate properly on shutdown You can avoid 
this if you let the NIO2 connector use the built-in executor rather than 
defining a (potentially) shared, external executor. > dec 08, 2022 12:59:48 PM 
org.apache.catalina.core.StandardService startInternal > INFO: Starting service 
[Tomcat] > dec 08, 2022 12:59:48 PM org.apache.catalina.core.StandardEngine 
startInternal > INFO: Starting Servlet engine: [Apache Tomcat/9.0.65] > dec 08, 
2022 12:59:48 PM org.apache.coyote.AbstractProtocol start > INFO: Starting 
ProtocolHandler ["http-nio2-8080"] > dec 08, 2022 12:59:49 PM 
org.apache.catalina.startup.ContextConfig getDefaultWebXmlFragment > INFO: No 
global web.xml found > application started in SHELL mode > Press 'q' key to 
exit. > q > dec  08, 2022 1:18:18 PM org.apache.coyote.AbstractProtocol pause > 
INFO: Pausing ProtocolHandler ["http-nio2-8080"] > dec 08, 2022 1:18:18 PM 
org.apache.catalina.core.StandardService stopInternal > INFO: Stopping service 
[Tomcat] > dec 08, 2022 1:18:18 PM org.apache.coyote.AbstractProtocol stop > 
INFO: Stopping ProtocolHandler ["http-nio2-8080"] > > I think this happens 
because we use http nio2 protocol, and we personally create an executor for 
him. Using an external executor triggers the warning above. It has nothing to 
do with why Tomcat doesn't shutdown. The thread dump shows that the utility 
executor hasn't shut down. That means that the Server object hasn't been 
shutdown correctly. Server.stop() has been called but Server.destroy() also 
needs to be called. Mark 
- To 
unsubscribe, e-mail: /compose/ users-unsubscr...@tomcat.apache.org For 
additional commands, e-mail: /compose/ users-h...@tomcat.apache.org


RE: Tomcat 9.0.65 Failed stop jpf application in shell mode

2022-12-12 Thread alik alikov
Okay thank you I'll try it
12.12.2022, 11:00, Mark Thomas < mailto:ma...@apache.org ma...@apache.org >
On 12/12/2022 04:40, alik alikov wrote: > When I try to shut down the 
application in the IDE console by 'q' application doesn't stopped. > > Thread 
Dump in attachments. > > Console log: > > dec 08, 2022 12:59:21 PM 
org.apache.coyote.AbstractProtocol init > INFO: Initializing ProtocolHandler 
["http-nio2-8080"] > dec 08, 2022 12:59:21 PM 
org.apache.tomcat.util.net.Nio2Endpoint bind > WARNING: The NIO2 connector 
requires an exclusive executor to operate properly on shutdown You can avoid 
this if you let the NIO2 connector use the built-in executor rather than 
defining a (potentially) shared, external executor. > dec 08, 2022 12:59:48 PM 
org.apache.catalina.core.StandardService startInternal > INFO: Starting service 
[Tomcat] > dec 08, 2022 12:59:48 PM org.apache.catalina.core.StandardEngine 
startInternal > INFO: Starting Servlet engine: [Apache Tomcat/9.0.65] > dec 08, 
2022 12:59:48 PM org.apache.coyote.AbstractProtocol start > INFO: Starting 
ProtocolHandler ["http-nio2-8080"] > dec 08, 2022 12:59:49 PM 
org.apache.catalina.startup.ContextConfig getDefaultWebXmlFragment > INFO: No 
global web.xml found > application started in SHELL mode > Press 'q' key to 
exit. > q > dec  08, 2022 1:18:18 PM org.apache.coyote.AbstractProtocol pause > 
INFO: Pausing ProtocolHandler ["http-nio2-8080"] > dec 08, 2022 1:18:18 PM 
org.apache.catalina.core.StandardService stopInternal > INFO: Stopping service 
[Tomcat] > dec 08, 2022 1:18:18 PM org.apache.coyote.AbstractProtocol stop > 
INFO: Stopping ProtocolHandler ["http-nio2-8080"] > > I think this happens 
because we use http nio2 protocol, and we personally create an executor for 
him. Using an external executor triggers the warning above. It has nothing to 
do with why Tomcat doesn't shutdown. The thread dump shows that the utility 
executor hasn't shut down. That means that the Server object hasn't been 
shutdown correctly. Server.stop() has been called but Server.destroy() also 
needs to be called. Mark 
- To 
unsubscribe, e-mail: /compose/ users-unsubscr...@tomcat.apache.org For 
additional commands, e-mail: /compose/ users-h...@tomcat.apache.org


Re: Tomcat 9.0.65 Failed stop jpf application in shell mode

2022-12-12 Thread Mark Thomas

On 12/12/2022 04:40, alik alikov wrote:

When I try to shut down the application in the IDE console by 'q' application 
doesn't stopped.

Thread Dump in attachments.

Console log:

dec 08, 2022 12:59:21 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio2-8080"]
dec 08, 2022 12:59:21 PM org.apache.tomcat.util.net.Nio2Endpoint bind
WARNING: The NIO2 connector requires an exclusive executor to operate properly 
on shutdown


You can avoid this if you let the NIO2 connector use the built-in 
executor rather than defining a (potentially) shared, external executor.



dec 08, 2022 12:59:48 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Tomcat]
dec 08, 2022 12:59:48 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet engine: [Apache Tomcat/9.0.65]
dec 08, 2022 12:59:48 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio2-8080"]
dec 08, 2022 12:59:49 PM org.apache.catalina.startup.ContextConfig 
getDefaultWebXmlFragment
INFO: No global web.xml found
application started in SHELL mode
Press 'q' key to exit.
q
dec  08, 2022 1:18:18 PM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-nio2-8080"]
dec 08, 2022 1:18:18 PM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service [Tomcat]
dec 08, 2022 1:18:18 PM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-nio2-8080"]

I think this happens because we use http nio2 protocol, and we personally 
create an executor for him.


Using an external executor triggers the warning above. It has nothing to 
do with why Tomcat doesn't shutdown.


The thread dump shows that the utility executor hasn't shut down. That 
means that the Server object hasn't been shutdown correctly. 
Server.stop() has been called but Server.destroy() also needs to be called.


Mark

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



RE: Tomcat 9.0.65

2022-12-11 Thread alik alikov
I did it because bot send me invalid something on my messages I think my sended 
message wasn't sent
12.12.2022, 10:52, Mark Thomas < mailto:ma...@apache.org ma...@apache.org >


Re: Tomcat 9.0.65

2022-12-11 Thread Mark Thomas
Please don't re-post the same question multiple times. It won't get your 
question answered any faster.


Mark


On 12/12/2022 06:20, alik alikov wrote:

Tomcat 9.0.65
When I try to shut down the application in the IDE console by 'q' application 
doesn't stopped.

Thread Dump in attachments.

Console log:

dec 08, 2022 12:59:21 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio2-8080"]
dec 08, 2022 12:59:21 PM org.apache.tomcat.util.net.Nio2Endpoint bind
WARNING: The NIO2 connector requires an exclusive executor to operate properly 
on shutdown
dec 08, 2022 12:59:48 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Tomcat]
dec 08, 2022 12:59:48 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet engine: [Apache Tomcat/9.0.65]
dec 08, 2022 12:59:48 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio2-8080"]
dec 08, 2022 12:59:49 PM org.apache.catalina.startup.ContextConfig 
getDefaultWebXmlFragment
INFO: No global web.xml found
application started in SHELL mode
Press 'q' key to exit.
q
dec  08, 2022 1:18:18 PM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-nio2-8080"]
dec 08, 2022 1:18:18 PM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service [Tomcat]
dec 08, 2022 1:18:18 PM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-nio2-8080"] I think this happens because 
we use http nio2 protocol, and we personally create an executor for him.
private void configureExecutor(final Connector connector, final String connectorName) { final 
StandardThreadExecutor executor = new TomcatThreadExecutor(); executor.setName(connectorName); final 
AbstractProtocol protocol = (AbstractProtocol) connector.getProtocolHandler(); 
String namePrefix = protocol.getName(); namePrefix = namePrefix.substring(1, namePrefix.length() - 
1); executor.setNamePrefix(namePrefix + "-exec-"); 
executor.setMaxThreads(protocol.getMaxThreads()); 
executor.setMinSpareThreads(protocol.getMinSpareThreads()); 
tomcat.getEngine().getService().addExecutor(executor); protocol.setExecutor(executor); }
Also thread dump:
"Catalina-utility-2" #98 prio=1 os_prio=-2 tid=0x1c3dd800 nid=0x4d00 waiting 
on condition [0x2418e000] java.lang.Thread.State: WAITING (parking) at 
sun.misc.Unsafe.park(Native Method) - parking to wait for <0x81fa93d0> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at 
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
 at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1081)
 at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
 at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074) at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at 
java.lang.Thread.run(Thread.java:748)
"Catalina-utility-1" #97 prio=1 os_prio=-2 tid=0x1c3e0800 nid=0x612c waiting 
on condition [0x2408e000] java.lang.Thread.State: WAITING (parking) at 
sun.misc.Unsafe.park(Native Method) - parking to wait for <0x81fa93d0> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at 
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
 at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
 at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
 at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074) at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at 
java.lang.Thread.run(Thread.java:748)
"Connection evictor" #95 daemon prio=5 os_prio=0 tid=0x1e76f800 
nid=0x309c waiting on condition [0x23c8f000] java.lang.Thread.State: 
TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at 
org.apache.http.impl.client.IdleConnectionEvictor$1.run(IdleConnectionEvictor.java:66) at 
java.lang.Thread.run(Thread.java:748)
"Thread-22" #91 daemon prio=5 os_prio=0 tid=0x1e76a000 nid=0x6b4 
runnable [0x233be000] java.lang.Thread.State: RUNNABLE at 
sun.nio.ch.Iocp.getQueuedCompletionStatus(Native 

Re: Tomcat 9.0.65 Clustering in Azure Kubernetes Service (AKS)

2022-10-01 Thread Chew Kok Hoor
Hi all,

 Just an update for anyone interested. I ditched the idea because there
are times the sessions are somehow just not copied correctly, and this is
just a 2 node cluster. As I am using AKS load balancer, I am not able to
use ip_hash for nginx.

 Instead I am now using redisson (I am not associated or affiliated to
them), and it seems to work for me so far.

Thanks.

Regards,
Kok Hoor



On Thu, 18 Aug 2022 at 14:34, Chew Kok Hoor  wrote:

> Hi Chris,
>
> Following are my setup. It seems to work but I am not sure if I did
> things correctly:
>
> 1. In my server.xml, I followed the setup in javadoc
> https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.html
>  for
> the cluster tag.
>
> 2. In my service (not sure this is right or wrong),
>
> - metadata.name is the name of my app appended with -membership.
> - spec.ports.port I set to my connector port
> - spec.selector.app I set it to the name of my app
>
>  apiVersion: v1
>  kind: Service
>  metadata:
>annotations:
>  service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
>  description: "The service for tomcat cluster membership."
>name: myapp-membership
>  spec:
>clusterIP: None
>ports:
>- name: membership
>  port: 80
>selector:
>  app: myapp
>
> 3. In my StatefulSet, I put the env settings in
> spec.template.spec.containers:
>
> env:
>   - name: DNS_MEMBERSHIP_SERVICE_NAME
> value: "myapp-membership"
>
> Still not sure if port 80 makes any sense (that's the port for my http
> listener which is loadbalanced by an nginx) but it seems to work.
>
> Thanks.
>
> Regards,
> Kok Hoor
>
>
> [image: width=]
> 
> Virus-free.www.avast.com
> 
> <#m_6135152540426665695_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>
> On Thu, 18 Aug 2022 at 02:37, Christopher Schultz <
> ch...@christopherschultz.net> wrote:
>
>> All,
>>
>> If you are havig issues with the CloudMembershipService, I would highly
>> recommend that you continue to have this discussion.
>>
>> The original author (remm) was mostly targeting OpenShift (he works for
>> RedHat, so it's not a surprise) but it doesn't mean that its support
>> cannot expand to include other deployments.
>>
>> If the DNSMembershipService is more appropriate for k8s-on-Azure, that's
>> fine, but if there is a community need (and especially if you are
>> willing to do the research and contribute code) we'd be happy to
>> accomodate you.
>>
>> -chris
>>
>> On 8/14/22 03:52, Chew Kok Hoor wrote:
>> > Hi,
>> >
>> >  I am trying to setup Tomcat clustering running in AKS, however the
>> > standard settings don't seem to work.
>> >
>> > As per the documentation I have setup following Cluster configuration in
>> > server.xml inside my  tag:
>> >   > className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
>> > > > className="org.apache.catalina.tribes.group.GroupChannel">
>> >   > >
>> className="org.apache.catalina.tribes.membership.cloud.CloudMembershipService"/>
>> > 
>> >   
>> >
>> > But I received a 'Failed connection to
>> > https://10.0.0.1:443/api/v1/namespaces/tomcat/pods' error. Is there
>> any way
>> > to resolve this?
>> >
>> > Error message:
>> >
>> > INFO: Cluster is about to start
>> > Aug 14, 2022 3:44:26 PM
>> org.apache.catalina.tribes.transport.ReceiverBase
>> > bind
>> > INFO: Receiver Server Socket bound to:[/10.240.0.76:4000]
>> > Aug 14, 2022 3:44:26 PM
>> > org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider
>> > getNamespace
>> > WARNING: Namespace not set
>> > Aug 14, 2022 3:44:26 PM
>> > org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider
>> > fetchMembers
>> > SEVERE: Failed to open stream
>> > java.io.IOException: Failed connection to [
>> > https://10.0.0.1:443/api/v1/namespaces/tomcat/pods] with token
>> > [--redacted--]
>> >  at
>> >
>> org.apache.catalina.tribes.membership.cloud.TokenStreamProvider.openStream(TokenStreamProvider.java:56)
>> >  at
>> >
>> org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider.fetchMembers(KubernetesMembershipProvider.java:136)
>> >  at
>> >
>> org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider.heartbeat(CloudMembershipProvider.java:127)
>> >  at
>> >
>> org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider.start(KubernetesMembershipProvider.java:116)
>> >  at
>> >
>> org.apache.catalina.tribes.membership.cloud.CloudMembershipService.start(CloudMembershipService.java:152)
>> >  at
>> >
>> org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:192)
>> >  at
>> >
>> 

Re: Tomcat 9.0.65 suspected memory leak

2022-09-19 Thread Mark Thomas

On 15/09/2022 14:11, Chen Levy wrote:

Hello Experts

We’ve recently upgraded some of our production servers to Tomcat 9.0.65; 
every upgraded server crashed with java.lang.OutOfMemoryError within an 
hour or so under load.


The exact same setup (same application, Linux kernel, Java version etc.) 
with Tomcat 9.0.63 does not exhibit this issue.


A heap-dump through MAT gave the following leak suspect (leak report 
attached):


“

14,364 instances of 
"org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper", loaded by 
"java.net.URLClassLoader @ 0x6be257090" occupy 4,489,221,944 (91.95%) bytes.


These instances are referenced from one instance of 
"java.util.concurrent.ConcurrentHashMap$Node[]", loaded by "class loader>", which occupies 590,736 (0.01%) bytes.


Keywords

     org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper

     java.net.URLClassLoader @ 0x6be257090

     java.util.concurrent.ConcurrentHashMap$Node[]

“

Please let me know if I should provide additional information


That looks like 14k current connections which isn't unreasonable for a 
Tomcat instance under load.


There are connector related changes between 9.0.63 and 9.0.65 but 
nothing that is obviously related to the issue you are seeing.


At this point there isn't enough information to differentiate between:
- a regression introduced in Tomcat between 9.0.63 and 9.0.65
- a change in Tomcat between 9.0.63 and 9.0.65 that exposed a bug in the
  deployed web application
- a change in Tomcat between 9.0.63 and 9.0.65 that triggered an
  increase memory usage sufficient to trigger an OOME in your
  environment

What we would need to investigate this further is a test case that 
demonstrates a leak. It doesn't have to trigger an OOME - it just has to 
demonstrate the JVM retaining references to objects you'd expect to have 
been eligible for GC. If you can reduce it to a single request even better.


Mark

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



Re: Tomcat 9.0.65 Clustering in Azure Kubernetes Service (AKS)

2022-08-18 Thread Chew Kok Hoor
Hi Chris,

Following are my setup. It seems to work but I am not sure if I did
things correctly:

1. In my server.xml, I followed the setup in javadoc
https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.html
for
the cluster tag.

2. In my service (not sure this is right or wrong),

- metadata.name is the name of my app appended with -membership.
- spec.ports.port I set to my connector port
- spec.selector.app I set it to the name of my app

 apiVersion: v1
 kind: Service
 metadata:
   annotations:
 service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
 description: "The service for tomcat cluster membership."
   name: myapp-membership
 spec:
   clusterIP: None
   ports:
   - name: membership
 port: 80
   selector:
 app: myapp

3. In my StatefulSet, I put the env settings in
spec.template.spec.containers:

env:
  - name: DNS_MEMBERSHIP_SERVICE_NAME
value: "myapp-membership"

Still not sure if port 80 makes any sense (that's the port for my http
listener which is loadbalanced by an nginx) but it seems to work.

Thanks.

Regards,
Kok Hoor


[image: width=]

Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

On Thu, 18 Aug 2022 at 02:37, Christopher Schultz <
ch...@christopherschultz.net> wrote:

> All,
>
> If you are havig issues with the CloudMembershipService, I would highly
> recommend that you continue to have this discussion.
>
> The original author (remm) was mostly targeting OpenShift (he works for
> RedHat, so it's not a surprise) but it doesn't mean that its support
> cannot expand to include other deployments.
>
> If the DNSMembershipService is more appropriate for k8s-on-Azure, that's
> fine, but if there is a community need (and especially if you are
> willing to do the research and contribute code) we'd be happy to
> accomodate you.
>
> -chris
>
> On 8/14/22 03:52, Chew Kok Hoor wrote:
> > Hi,
> >
> >  I am trying to setup Tomcat clustering running in AKS, however the
> > standard settings don't seem to work.
> >
> > As per the documentation I have setup following Cluster configuration in
> > server.xml inside my  tag:
> >className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
> >  > className="org.apache.catalina.tribes.group.GroupChannel">
> >>
> className="org.apache.catalina.tribes.membership.cloud.CloudMembershipService"/>
> > 
> >   
> >
> > But I received a 'Failed connection to
> > https://10.0.0.1:443/api/v1/namespaces/tomcat/pods' error. Is there any
> way
> > to resolve this?
> >
> > Error message:
> >
> > INFO: Cluster is about to start
> > Aug 14, 2022 3:44:26 PM org.apache.catalina.tribes.transport.ReceiverBase
> > bind
> > INFO: Receiver Server Socket bound to:[/10.240.0.76:4000]
> > Aug 14, 2022 3:44:26 PM
> > org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider
> > getNamespace
> > WARNING: Namespace not set
> > Aug 14, 2022 3:44:26 PM
> > org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider
> > fetchMembers
> > SEVERE: Failed to open stream
> > java.io.IOException: Failed connection to [
> > https://10.0.0.1:443/api/v1/namespaces/tomcat/pods] with token
> > [--redacted--]
> >  at
> >
> org.apache.catalina.tribes.membership.cloud.TokenStreamProvider.openStream(TokenStreamProvider.java:56)
> >  at
> >
> org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider.fetchMembers(KubernetesMembershipProvider.java:136)
> >  at
> >
> org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider.heartbeat(CloudMembershipProvider.java:127)
> >  at
> >
> org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider.start(KubernetesMembershipProvider.java:116)
> >  at
> >
> org.apache.catalina.tribes.membership.cloud.CloudMembershipService.start(CloudMembershipService.java:152)
> >  at
> >
> org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:192)
> >  at
> >
> org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:106)
> >  at
> >
> org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
> >  at
> >
> org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
> >  at
> >
> org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start(MessageDispatchInterceptor.java:224)
> >  at
> >
> org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
> >  at
> >
> org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:504)
> 

Re: Tomcat 9.0.65 Clustering in Azure Kubernetes Service (AKS)

2022-08-17 Thread Christopher Schultz

All,

If you are havig issues with the CloudMembershipService, I would highly 
recommend that you continue to have this discussion.


The original author (remm) was mostly targeting OpenShift (he works for 
RedHat, so it's not a surprise) but it doesn't mean that its support 
cannot expand to include other deployments.


If the DNSMembershipService is more appropriate for k8s-on-Azure, that's 
fine, but if there is a community need (and especially if you are 
willing to do the research and contribute code) we'd be happy to 
accomodate you.


-chris

On 8/14/22 03:52, Chew Kok Hoor wrote:

Hi,

 I am trying to setup Tomcat clustering running in AKS, however the
standard settings don't seem to work.

As per the documentation I have setup following Cluster configuration in
server.xml inside my  tag:
  

  

  

But I received a 'Failed connection to
https://10.0.0.1:443/api/v1/namespaces/tomcat/pods' error. Is there any way
to resolve this?

Error message:

INFO: Cluster is about to start
Aug 14, 2022 3:44:26 PM org.apache.catalina.tribes.transport.ReceiverBase
bind
INFO: Receiver Server Socket bound to:[/10.240.0.76:4000]
Aug 14, 2022 3:44:26 PM
org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider
getNamespace
WARNING: Namespace not set
Aug 14, 2022 3:44:26 PM
org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider
fetchMembers
SEVERE: Failed to open stream
java.io.IOException: Failed connection to [
https://10.0.0.1:443/api/v1/namespaces/tomcat/pods] with token
[--redacted--]
 at
org.apache.catalina.tribes.membership.cloud.TokenStreamProvider.openStream(TokenStreamProvider.java:56)
 at
org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider.fetchMembers(KubernetesMembershipProvider.java:136)
 at
org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider.heartbeat(CloudMembershipProvider.java:127)
 at
org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider.start(KubernetesMembershipProvider.java:116)
 at
org.apache.catalina.tribes.membership.cloud.CloudMembershipService.start(CloudMembershipService.java:152)
 at
org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:192)
 at
org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:106)
 at
org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
 at
org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
 at
org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start(MessageDispatchInterceptor.java:224)
 at
org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
 at
org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:504)
 at
org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:564)
 at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
 at
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:908)
 at
org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
 at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
 at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
 at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
 at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
 at
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
 at
java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown
Source)
 at
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
 at
org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:265)
 at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
 at
org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
 at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
 at
org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
 at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
 at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
 at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown
Source)
 at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source)
 at java.base/java.lang.reflect.Method.invoke(Unknown Source)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
 at 

Re: Tomcat 9.0.65 Clustering in Azure Kubernetes Service (AKS)

2022-08-16 Thread Thomas Meyer



Am 15. August 2022 03:47:18 MESZ schrieb Chew Kok Hoor :
>Hi Thomas,

Hi,

>Thanks for pointing me to another option which is the
>DNSMembershipService.
>
>Hope you can help to clarify two things in the dns-membership-service.yml:
>
>1. For spec.port, is port  mandatory? Or can it be any other number? I
>checked the source code for DNSMembershipService.java and can't find
>reference to the port number in it.

I think the port number is mandatory in k8s manifest, and is not used in tomcat 
DNS membership service.
So any valid tcp port number will do.

>2. For spec.selector.app, is this the name to my tomcat app name (
>metadata.labels.app) ?
Yes, the selector must match your pods label, to pick up all pods that will 
belong to your tomcat cluster.

>
>Thanks.
>
>Regards,
>Kok Hoor
>
>
>[image: width=]
>
>Virus-free.www.avast.com
>
><#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>
>On Sun, 14 Aug 2022 at 17:01, Thomas Meyer  wrote:
>
>> Hi,
>>
>> Two remarks from my side:
>> 1. CloudMembershipService is not so usable, and seems to originally target
>> OpenShift. To make it work you need to create ServiceAccount and give read
>> permission for listing all pods in namespace. This seems to be missing in
>> your case. It also has some assumptions about namespaces and naming of k8s
>> manifests/objects.
>>
>> 2. DNSMembershipService is much easier to use, I suggest you to have a
>> look at this instead:
>> https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.html
>> For this Membership Provider you only need to add headless Service
>> manifest, I.e. ClusterIP: none.
>>
>> Mfg
>> Thomas
>>
>> Am 14. August 2022 09:52:52 MESZ schrieb Chew Kok Hoor > >:
>>>
>>> Hi,
>>>
>>> I am trying to setup Tomcat clustering running in AKS, however the
>>> standard settings don't seem to work.
>>>
>>> As per the documentation I have setup following Cluster configuration in
>>> server.xml inside my  tag:
>>>  
>>>>> className="org.apache.catalina.tribes.group.GroupChannel">
>>>  >> className="org.apache.catalina.tribes.membership.cloud.CloudMembershipService"/>
>>>
>>>  
>>>
>>> But I received a 'Failed connection to
>>> https://10.0.0.1:443/api/v1/namespaces/tomcat/pods' error. Is there any way
>>> to resolve this?
>>>
>>> Error message:
>>>
>>> INFO: Cluster is about to start
>>> Aug 14, 2022 3:44:26 PM org.apache.catalina.tribes.transport.ReceiverBase
>>> bind
>>> INFO: Receiver Server Socket bound to:[/10.240.0.76:4000]
>>> Aug 14, 2022 3:44:26 PM
>>> org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider
>>> getNamespace
>>> WARNING: Namespace not set
>>> Aug 14, 2022 3:44:26 PM
>>> org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider
>>> fetchMembers
>>> SEVERE: Failed to open stream
>>> java.io.IOException: Failed connection to [
>>> https://10.0.0.1:443/api/v1/namespaces/tomcat/pods] with token
>>> [--redacted--]
>>> at
>>> org.apache.catalina.tribes.membership.cloud.TokenStreamProvider.openStream(TokenStreamProvider.java:56)
>>> at
>>> org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider.fetchMembers(KubernetesMembershipProvider.java:136)
>>> at
>>> org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider.heartbeat(CloudMembershipProvider.java:127)
>>> at
>>> org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider.start(KubernetesMembershipProvider.java:116)
>>> at
>>> org.apache.catalina.tribes.membership.cloud.CloudMembershipService.start(CloudMembershipService.java:152)
>>> at
>>> org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:192)
>>> at
>>> org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:106)
>>> at
>>> org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
>>> at
>>> org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
>>> at
>>> org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start(MessageDispatchInterceptor.java:224)
>>> at
>>> org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
>>> at
>>> org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:504)
>>> at
>>> org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:564)
>>> at
>>> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
>>> at
>>> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:908)
>>> at
>>> 

Re: Tomcat 9.0.65 Clustering in Azure Kubernetes Service (AKS)

2022-08-14 Thread Chew Kok Hoor
Hi Thomas,

Thanks for pointing me to another option which is the
DNSMembershipService.

Hope you can help to clarify two things in the dns-membership-service.yml:

1. For spec.port, is port  mandatory? Or can it be any other number? I
checked the source code for DNSMembershipService.java and can't find
reference to the port number in it.

2. For spec.selector.app, is this the name to my tomcat app name (
metadata.labels.app) ?

Thanks.

Regards,
Kok Hoor


[image: width=]

Virus-free.www.avast.com

<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

On Sun, 14 Aug 2022 at 17:01, Thomas Meyer  wrote:

> Hi,
>
> Two remarks from my side:
> 1. CloudMembershipService is not so usable, and seems to originally target
> OpenShift. To make it work you need to create ServiceAccount and give read
> permission for listing all pods in namespace. This seems to be missing in
> your case. It also has some assumptions about namespaces and naming of k8s
> manifests/objects.
>
> 2. DNSMembershipService is much easier to use, I suggest you to have a
> look at this instead:
> https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.html
> For this Membership Provider you only need to add headless Service
> manifest, I.e. ClusterIP: none.
>
> Mfg
> Thomas
>
> Am 14. August 2022 09:52:52 MESZ schrieb Chew Kok Hoor  >:
>>
>> Hi,
>>
>> I am trying to setup Tomcat clustering running in AKS, however the
>> standard settings don't seem to work.
>>
>> As per the documentation I have setup following Cluster configuration in
>> server.xml inside my  tag:
>>  
>>> className="org.apache.catalina.tribes.group.GroupChannel">
>>  > className="org.apache.catalina.tribes.membership.cloud.CloudMembershipService"/>
>>
>>  
>>
>> But I received a 'Failed connection to
>> https://10.0.0.1:443/api/v1/namespaces/tomcat/pods' error. Is there any way
>> to resolve this?
>>
>> Error message:
>>
>> INFO: Cluster is about to start
>> Aug 14, 2022 3:44:26 PM org.apache.catalina.tribes.transport.ReceiverBase
>> bind
>> INFO: Receiver Server Socket bound to:[/10.240.0.76:4000]
>> Aug 14, 2022 3:44:26 PM
>> org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider
>> getNamespace
>> WARNING: Namespace not set
>> Aug 14, 2022 3:44:26 PM
>> org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider
>> fetchMembers
>> SEVERE: Failed to open stream
>> java.io.IOException: Failed connection to [
>> https://10.0.0.1:443/api/v1/namespaces/tomcat/pods] with token
>> [--redacted--]
>> at
>> org.apache.catalina.tribes.membership.cloud.TokenStreamProvider.openStream(TokenStreamProvider.java:56)
>> at
>> org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider.fetchMembers(KubernetesMembershipProvider.java:136)
>> at
>> org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider.heartbeat(CloudMembershipProvider.java:127)
>> at
>> org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider.start(KubernetesMembershipProvider.java:116)
>> at
>> org.apache.catalina.tribes.membership.cloud.CloudMembershipService.start(CloudMembershipService.java:152)
>> at
>> org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:192)
>> at
>> org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:106)
>> at
>> org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
>> at
>> org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
>> at
>> org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start(MessageDispatchInterceptor.java:224)
>> at
>> org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
>> at
>> org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:504)
>> at
>> org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:564)
>> at
>> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
>> at
>> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:908)
>> at
>> org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
>> at
>> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
>> at
>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
>> at
>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
>> at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
>> at
>> 

Re: Tomcat 9.0.65 Clustering in Azure Kubernetes Service (AKS)

2022-08-14 Thread Thomas Meyer
Hi,

Two remarks from my side:
1. CloudMembershipService is not so usable, and seems to originally target 
OpenShift. To make it work you need to create ServiceAccount and give read 
permission for listing all pods in namespace. This seems to be missing in your 
case. It also has some assumptions about namespaces and naming of k8s 
manifests/objects.

2. DNSMembershipService is much easier to use, I suggest you to have a look at 
this instead: 
https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.html
For this Membership Provider you only need to add headless Service manifest, 
I.e. ClusterIP: none.

Mfg
Thomas

Am 14. August 2022 09:52:52 MESZ schrieb Chew Kok Hoor :
>Hi,
>
>I am trying to setup Tomcat clustering running in AKS, however the
>standard settings don't seem to work.
>
>As per the documentation I have setup following Cluster configuration in
>server.xml inside my  tag:
> 
>   className="org.apache.catalina.tribes.group.GroupChannel">
> className="org.apache.catalina.tribes.membership.cloud.CloudMembershipService"/>
>   
> 
>
>But I received a 'Failed connection to
>https://10.0.0.1:443/api/v1/namespaces/tomcat/pods' error. Is there any way
>to resolve this?
>
>Error message:
>
>INFO: Cluster is about to start
>Aug 14, 2022 3:44:26 PM org.apache.catalina.tribes.transport.ReceiverBase
>bind
>INFO: Receiver Server Socket bound to:[/10.240.0.76:4000]
>Aug 14, 2022 3:44:26 PM
>org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider
>getNamespace
>WARNING: Namespace not set
>Aug 14, 2022 3:44:26 PM
>org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider
>fetchMembers
>SEVERE: Failed to open stream
>java.io.IOException: Failed connection to [
>https://10.0.0.1:443/api/v1/namespaces/tomcat/pods] with token
>[--redacted--]
>at
>org.apache.catalina.tribes.membership.cloud.TokenStreamProvider.openStream(TokenStreamProvider.java:56)
>at
>org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider.fetchMembers(KubernetesMembershipProvider.java:136)
>at
>org.apache.catalina.tribes.membership.cloud.CloudMembershipProvider.heartbeat(CloudMembershipProvider.java:127)
>at
>org.apache.catalina.tribes.membership.cloud.KubernetesMembershipProvider.start(KubernetesMembershipProvider.java:116)
>at
>org.apache.catalina.tribes.membership.cloud.CloudMembershipService.start(CloudMembershipService.java:152)
>at
>org.apache.catalina.tribes.group.ChannelCoordinator.internalStart(ChannelCoordinator.java:192)
>at
>org.apache.catalina.tribes.group.ChannelCoordinator.start(ChannelCoordinator.java:106)
>at
>org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
>at
>org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
>at
>org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor.start(MessageDispatchInterceptor.java:224)
>at
>org.apache.catalina.tribes.group.ChannelInterceptorBase.start(ChannelInterceptorBase.java:190)
>at
>org.apache.catalina.tribes.group.GroupChannel.start(GroupChannel.java:504)
>at
>org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal(SimpleTcpCluster.java:564)
>at
>org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
>at
>org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:908)
>at
>org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
>at
>org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
>at
>org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
>at
>org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
>at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
>at
>org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
>at
>java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown
>Source)
>at
>org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
>at
>org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:265)
>at
>org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
>at
>org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
>at
>org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
>at
>org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
>at
>org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
>at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
>at
>java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
>Method)
>at