Import Interrupted

De plus, voici le logs d’erreur qui s’affiche à la suite de cette interruption

2020-04-03 16:40:37,524 ERROR [com.simplicite.util.IntegrationDirect] SIMPLICITE|http://d2647e4a7be5:8080||ECORED0001|system|com.simplicite.util.IntegrationDirect|importADP||Error Problem in XML import thru adapter SitesRaftAD
    java.lang.NullPointerException
     at com.simplicite.util.GrantCore.hasResponsibility(GrantCore.java:1340)
     at com.simplicite.util.Grant.getAdmin(Grant.java:430)
     at com.simplicite.util.Grant.getAdmin(Grant.java:407)
     at com.simplicite.util.engine.Interface.importData(Interface.java:470)
     at com.simplicite.util.engine.Interface.importData(Interface.java:522)
     at com.simplicite.util.engine.Interface.importADP(Interface.java:439)
     at com.simplicite.util.IntegrationDirect.importADP(IntegrationDirect.java:186)
     at com.simplicite.util.Integration.importADP(Integration.java:383)
     at com.simplicite.webapp.servlets.AbstractIOServlet.doPost(AbstractIOServlet.java:473)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
     at com.simplicite.webapp.filters.AuthMethodFilter.doFilter(AuthMethodFilter.java:133)
     at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
     at com.simplicite.webapp.filters.RewriteFilter.doFilter(RewriteFilter.java:77)
     at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:188)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
     at com.simplicite.tomcat.valves.APISessionValve.invoke(APISessionValve.java:187)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
     at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
     at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
     at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
     at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594)
     at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
     at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
     at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

Je réitère ma question : combien de temps prend votre import ?

Je pense que votre session web a tout simplement expiré, et que en back tout a bien été traité par le reader puisque que cette erreur arrive une fois que l’adapter a terminé son travail.

A la fin de l’import de l’adapteur, Simplicité tente d’importer le fichier XML généré par votre adapter (en l’occurrence c’est vide car votre adapter fait le travail en direct sans générer de XML). Le pointeur null signifie que vos droits de session sont vides, et il ne peut plus faire un save dans l’objet de supervision.

Comme déjà dit un import aussi long doit nécessairement être compatible avec tous vos timeout, y compris de temps d’inactivité de session tomcat :

Vous indiquez au début SESSION_TIMEOUT = 5
donc au bout de 5 minutes, si votre UI ne poste aucune requête la session expire.
mettez 60 minutes, ou passez par un autre canal que la UI.

Je vais voir pour mettre en place un keep alive côté client durant cet appel (pour ignorer le timeout de session).

Ces imports peuvent durer plusieurs heures (plus d’une demi journée)

Ok je vais essayer avec la modification de timeout session et vous tiendrai au courant

Merci!

Ok mais c’est beaucoup trop long pour un appel HTTP. Il peut se passer n’importe quoi entre temps.
Il est préférable de découper votre fichier en paquets.

En Feature Request, il va donc falloir plutôt réflechir à ce que cette interface rende la main à l’utilisateur si l’import dépasse qq minutes (ou mieux si on peut remonter une barre de progression dans le cas d’un lineBaseAdapter avec un bouton pour passer en tache de fond), et laisser le thread stateless côté serveur vivre sa vie sans jamais accéder à la session 4h après…

Juste pour en revenir à des calculs simples: 1/2 journée pour traiter 26 000 lignes ça veut dire presque 2s de traitement par ligne… ça me semble énorme.

Je pense que vous devriez peut être déjà commencer par regarder s’il n’y a pas des choses simples à faire pour optimiser ce temps de traitement unitaire = check/optim des indexes en base, utilisation de données “cachées” en mémoire dans votre code pour limiter les appels en base, inhibition de règles de gestion qui ne servent à rien dans ce contexte d’import en masse, etc.