[Instanceplantée] https://usecase.orangeab.simplicite.io/

Nous sommes en train de travailler sur un usecase pour monter en compétences sur la plateforme SIMPLICITE et celle-ci ne fonctionne plus. Nous avons le message d’erreur suivant (cf. Copie d’écran) :

[com.simplicite.util.websockets.AbstractWebsocket$GrantSession] SIMPLICITE|http://orangeab.simplicite.io:10198||WARN|system|com.simplicite.util.websockets.AbstractWebsocket$GrantSession|getBasicRemote||Event: Unable to get basic remote, session is dead 1 2021-01-05 15:33:47,255 WARN [com.simplicite.util.websockets.AbstractWebsocket$GrantSession]

StackOverflowError

On a arrêté et relancé 2 fois l’instance ce qui permet de le faire fonctionner à nouveau mais à chaque fois ça replante au bout de 20min.

Un stack overflow est du code qui part en boucle.

On a vu un truc dans le code Simplicité qui pourrait avoir ce type de comportement au logout (ou au timeout de session) au niveau des remontées de logs via websockets. On avait jamais vu ce genre de pb. A titre conservatoire on a renforcé la robustresse de cette partie du code ce sera poussé ce soir

En attendant regardez si vous n’avez pas aussi ce genre de boucles infinies dans votre code

J’ai poussé par anticipation la modif socle en quetsion sur cette instance usecase.orangeab.simplicite.io.

Regardez si vous avez toujours le stack overflow. Merci

J’ai vu passer le stackoverflow (je surveillais les logs), je vais investiguer.

Visiblement la mise à jour ne s’est pas faite, il semble que la mécanique SIM soit “cassée” (sans doute à cause du file system full). Je vais voir pour réparer ça.

En attendant j’ai arrété cette instance

Tout à fait, l’instance est de nouveau down, j’ai fait qu’une seule manip : me connecter en tant que User puis changer de scope vers Designer, peut être ça vous dira quelque chose par rapport au Logout que vous avez cité

Ne faites plus rien sur cette instance jusqu’à mon feu vert

J’ai réparé la mécanique du SIM et j’ai mis l’instance à jour, refaites votre test, je surveille les logs en //

Merci, je reprends et je vous tiens au courant

je ne sais pas si ç’est ça le probléme mais on a toujours ça dans les logs au moment de changer d’utilisateur, pour l’instant l’instance fonctionne toujours

2021-01-06 17:47:09,171 WARN [root] SIMPLICITE: Unable to send data to basic remote c
    java.lang.IllegalStateException: Message will not be sent because the WebSocket session has been closed
     at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:439)
     at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:311)
     at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:251)
     at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(WsRemoteEndpointImplBase.java:192)
     at org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:37)
     at com.simplicite.util.websockets.AbstractWebsocket$GrantSession.send(AbstractWebsocket.java:146)
     at com.simplicite.util.websockets.WebsocketEvent.pushLog(WebsocketEvent.java:175)
     at com.simplicite.util.AppLog.debug(AppLog.java:651)
     at com.simplicite.util.AppLog.log(AppLog.java:424)
     at com.simplicite.util.AppLog.log(AppLog.java:377)
     at com.simplicite.util.AppLog.log(AppLog.java:547)
     at com.simplicite.util.websockets.AbstractWebsocket.log(AbstractWebsocket.java:387)
     at com.simplicite.util.websockets.AbstractWebsocket.onClose(AbstractWebsocket.java:203)
     at com.simplicite.util.websockets.AbstractWebsocket.onCloseHandler(AbstractWebsocket.java:357)
     at com.simplicite.webapp.websockets.ui.Events.onCloseHandler(Events.java:62)
     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.base/java.lang.reflect.Method.invoke(Method.java:564)
     at org.apache.tomcat.websocket.pojo.PojoEndpointBase.onClose(PojoEndpointBase.java:103)
     at org.apache.tomcat.websocket.WsSession.fireEndpointOnClose(WsSession.java:556)
     at org.apache.tomcat.websocket.WsSession.onClose(WsSession.java:534)
     at org.apache.tomcat.websocket.WsFrameBase.processDataControl(WsFrameBase.java:367)
     at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:296)
     at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:133)
     at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:85)
     at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:183)
     at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:162)
     at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:156)
     at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:60)
     at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:59)
     at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
     at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
     at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
     at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
     at java.base/java.lang.Thread.run(Thread.java:832)

Oui visiblement votre infra (firewalls, proxies, …) et/ou votre navigateur n’aime pas les websockets.

Du coup ça tombait dans un cas aux limites pas suffisamment robuste où le warning partait en boucle. La correction qu’on a apporté rend ce cas plus robuste, ce warning est donc “normal” dans votre cas particulier que je vois pour la 1ère fois et il ne part plus en boucle.

Il faudra quand même que vous investiguiez de votre coté pour comprendre pourquoi les websockets ont des pbs chez vous. Pour rappel nous remontons les logs serveur dans la console du navigateur en temps réel via des websockets pour designer et c’est quand même infiniment plus pratique que le vieux log viewer legacy ou que d’aller faire des tail -f sur le serveur: