Failed to execute a write operation for Broadcaster

Hi

I have suddenly started to get this error in my app and can’t seem to figure why. This seems to occure when I refresh views or navigate between views, but not always. We have recently migrated to vaadin 25.1, but from my recollection it did not start immidatly after the migration either. I can see from the stacktrace that there is some mentions of a atmosphere-vaadin jar.

The app seem to work fine still and on the client there is no issue, but I still want to figure out whats causing this.

Any suggestions?

2026-05-13T09:08:12.850+02:00  WARN 75272 --- [here-Shared-973] org.atmosphere.cpr.DefaultBroadcaster    : This message PushMessage 57, body: {"clientId":5,"meta":{"async":true},"changes":[{"node":302,"type":"put","key":"text","feat":7,"value":"Antall: 182"},{"node":303,"type":"clear","feat":2},{"node":303,"type":"splice","feat":2,"index":0,"addNodes":[302]},{"node":353,"type":"clear","feat":2},{"node":353,"type":"splice","feat":2,"index":0,"addNodes":[352]}],"timings":[46279,9],"syncId":57} will be lost for AtmosphereResource ffc41a5c-ce36-4319-9e2f-d01931af49f0, adding it to the BroadcasterCache
2026-05-13T09:08:12.851+02:00  WARN 75272 --- [here-Shared-973] org.atmosphere.cpr.DefaultBroadcaster    : Failed to execute a write operation for Broadcaster /*

java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
	at org.apache.catalina.connector.RequestFacade.checkFacade(RequestFacade.java:609) ~[tomcat-embed-core-11.0.20.jar:11.0.20]
	at org.apache.catalina.connector.RequestFacade.removeAttribute(RequestFacade.java:232) ~[tomcat-embed-core-11.0.20.jar:11.0.20]
	at org.apache.catalina.core.ApplicationHttpRequest.removeAttribute(ApplicationHttpRequest.java:282) ~[tomcat-embed-core-11.0.20.jar:11.0.20]
	at jakarta.servlet.ServletRequestWrapper.removeAttribute(ServletRequestWrapper.java:257) ~[tomcat-embed-core-11.0.20.jar:6.1]
	at jakarta.servlet.ServletRequestWrapper.removeAttribute(ServletRequestWrapper.java:257) ~[tomcat-embed-core-11.0.20.jar:6.1]
	at jakarta.servlet.ServletRequestWrapper.removeAttribute(ServletRequestWrapper.java:257) ~[tomcat-embed-core-11.0.20.jar:6.1]
	at jakarta.servlet.ServletRequestWrapper.removeAttribute(ServletRequestWrapper.java:257) ~[tomcat-embed-core-11.0.20.jar:6.1]
	at jakarta.servlet.ServletRequestWrapper.removeAttribute(ServletRequestWrapper.java:257) ~[tomcat-embed-core-11.0.20.jar:6.1]
	at org.atmosphere.cpr.AtmosphereRequestImpl.removeAttribute(AtmosphereRequestImpl.java:681) ~[atmosphere-runtime-3.0.5.slf4jvaadin1.jar:3.0.5.slf4jvaadin1]
	at org.atmosphere.cpr.DefaultBroadcaster.executeAsyncWrite(DefaultBroadcaster.java:911) ~[atmosphere-runtime-3.0.5.slf4jvaadin1.jar:3.0.5.slf4jvaadin1]
	at org.atmosphere.cpr.DefaultBroadcaster$2.run(DefaultBroadcaster.java:477) ~[atmosphere-runtime-3.0.5.slf4jvaadin1.jar:3.0.5.slf4jvaadin1]
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[na:na]
	at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317) ~[na:na]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)

This is a known Tomcat configuration issue, you need to disable RECYCLE_FACADES

This is not Vaadin version specific issue, but can happen with all versions from Vaadin 7 to Vaadin 25.

Note, with older Tomcat versions the default setting was the opposite, thus this has been reported more often nowadays.