Souci avec un checkDb warning

Bonjour,
Sur mon dernier serveur 4.2 en prod je viens de lancer un checkDb et il m’a renvoyé le message ci-dessous. J’ignore si il y a un risque quelque-part de depuis quand.

Pourriez-vous me donner un éclaircissement svp ?
merci d’avance
Franck

<message type="Warning" ts="1648733675572" appCtx="chain" user="XXXXX" thread="http-nio-8080-exec-4" desc="Check db auto with warnings in 15436ms. See file: /var/lib/scenariserver4.2/tmp/tmp/adminOdb/checkDb.2022-03-31_15-34-35.1.txt"/>

et le contenu du fichier en question :

1--- Error : Thu Mar 31 15:34:32 CEST 2022[308] - chain/system (http-nio-8080-exec-4) ---
Check value 'eu.scenari.orient.recordstruct.lib.tree.ValueTree@230b719a' failed in record #1:0

2--- Exception : Thu Mar 31 15:34:32 CEST 2022[308] - chain/system (http-nio-8080-exec-4) ---
java.lang.NullPointerException
    at eu.scenari.orient.recordstruct.lib.tree.ValueTreeRake.loadNode(ValueTreeRake.java:177)
    at eu.scenari.orient.recordstruct.lib.tree.ValueTreeRake.checkTreeIntegrity(ValueTreeRake.java:292)
    at eu.scenari.orient.recordstruct.lib.tree.ValueTreeRake.checkTreeIntegrity(ValueTreeRake.java:291)
    at eu.scenari.orient.recordstruct.lib.tree.ValueTree.checkTreeIntegrity(ValueTree.java:393)
    at eu.scenari.orient.recordstruct.lib.tree.ValueTree.checkValue(ValueTree.java:381)
    at eu.scenari.orient.tools.check.CheckDbVisitor.visitValue(CheckDbVisitor.java:61)
    at eu.scenari.orient.recordstruct.lib.tree.ValueTree.accept(ValueTree.java:350)
    at eu.scenari.orient.recordstruct.impl.RecordStructImpl.accept(RecordStructImpl.java:471)
    at eu.scenari.orient.tools.check.CheckDb.browseClusters(CheckDb.java:258)
    at eu.scenari.orient.tools.check.CheckDb.executeCheck(CheckDb.java:183)
    at eu.scenari.orient.tools.check.CheckDb$1.call(CheckDb.java:155)
    at eu.scenari.orient.tools.check.CheckDb$1.call(CheckDb.java:141)
    at com.orientechnologies.orient.core.storage.OStorageAbstract.callInLock(OStorageAbstract.java:167)
    at com.orientechnologies.orient.core.db.ODatabaseWrapperAbstract.callInLock(ODatabaseWrapperAbstract.java:310)
    at eu.scenari.orient.tools.check.CheckDb.call(CheckDb.java:141)
    at eu.scenari.orient.service.adminodb.SvcAdminOdbDialog.xExecuteDialog(SvcAdminOdbDialog.java:291)
    at eu.scenari.core.dialog.DialogBase.executeDialog(DialogBase.java:92)
    at eu.scenari.core.execframe.httpservlet.HttpRequestConnectorBase.handleRequest(HttpRequestConnectorBase.java:75)
    at eu.scenari.core.execframe.httpservlet.servlets.ServiceServlet.service(ServiceServlet.java:160)
    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:52)
    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:200)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:623)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1627)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    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:750)



1--- Error : Thu Mar 31 15:34:32 CEST 2022[310] - chain/system (http-nio-8080-exec-4) ---
Check record #1:0 failed.

2--- Exception : Thu Mar 31 15:34:32 CEST 2022[310] - chain/system (http-nio-8080-exec-4) ---
java.lang.NullPointerException
    at eu.scenari.orient.recordstruct.lib.tree.ValueTreeRake.accept(ValueTreeRake.java:247)
    at eu.scenari.orient.recordstruct.lib.tree.ValueTreeRake.accept(ValueTreeRake.java:248)
    at eu.scenari.orient.recordstruct.lib.tree.ValueTree.accept(ValueTree.java:356)
    at eu.scenari.orient.recordstruct.impl.RecordStructImpl.accept(RecordStructImpl.java:471)
    at eu.scenari.orient.tools.check.CheckDb.browseClusters(CheckDb.java:258)
    at eu.scenari.orient.tools.check.CheckDb.executeCheck(CheckDb.java:183)
    at eu.scenari.orient.tools.check.CheckDb$1.call(CheckDb.java:155)
    at eu.scenari.orient.tools.check.CheckDb$1.call(CheckDb.java:141)
    at com.orientechnologies.orient.core.storage.OStorageAbstract.callInLock(OStorageAbstract.java:167)
    at com.orientechnologies.orient.core.db.ODatabaseWrapperAbstract.callInLock(ODatabaseWrapperAbstract.java:310)
    at eu.scenari.orient.tools.check.CheckDb.call(CheckDb.java:141)
    at eu.scenari.orient.service.adminodb.SvcAdminOdbDialog.xExecuteDialog(SvcAdminOdbDialog.java:291)
    at eu.scenari.core.dialog.DialogBase.executeDialog(DialogBase.java:92)
    at eu.scenari.core.execframe.httpservlet.HttpRequestConnectorBase.handleRequest(HttpRequestConnectorBase.java:75)
    at eu.scenari.core.execframe.httpservlet.servlets.ServiceServlet.service(ServiceServlet.java:160)
    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:52)
    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:200)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:623)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1627)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    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:750)



1--- Error : Thu Mar 31 15:34:33 CEST 2022[790] - chain/system (http-nio-8080-exec-4) ---
Exception in stage 'postCheckManagers' for Manager : blobManager

2--- Exception : Thu Mar 31 15:34:33 CEST 2022[790] - chain/system (http-nio-8080-exec-4) ---
java.lang.NullPointerException

Bonjour,
En complément de mon message précédent, j’observer par endroit, vu dans 2 atelier le phénomène suivant si je télécharge certains fichiers ou un scar et que je veux renvoyer ces fichiers ou certains fichiers du scar modifiés en local (dans l’exemple ci-dessous une vidéo réencodée), j’ai alors le message d’erreur suivant :

Erreur lors de la copie vers '/clip19.mp4'

--- User details ---
C:\XXXX\XXXX\XXXX\clip19.mp4
  -> Il est impossible de copier le fichier à cet emplacement. (500)

--- Admin details ---
<!doctype html><html lang="fr"><head><title>État HTTP 500 – Erreur interne du serveur</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>État HTTP 500 – Erreur interne du serveur</h1><hr class="line" /><p><b>Type</b> Rapport d'état</p><p><b>message</b> Internal Server Error</p><p><b>description</b> Le serveur a rencontré une erreur interne qui l'a empêché de satisfaire la requête.</p><hr class="line" /><h3>XXX</h3></body></html>

--- Js stack ---
endUpload@chrome://scenariwsp/content/utils/upload/upload.jsm:722:7
send@chrome://scenariwsp/content/utils/upload/upload.jsm:527:6
cbUploadFile@chrome://scenariwsp/content/utils/upload/upload.jsm:666:6
upload.UploadFile.prototype.onStopRequest@chrome://scenariwsp/content/utils/upload/upload.jsm:387:4


--- App context ---
timestamp: 2/4/2022 11:06:13
userAgent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:42.0) Gecko/20100101 ch.4.2/4.2.201
coreVersion: 4.2.201
brandShortName: SCENARIchain
appVersion: 4.2.201
appBuildId: 201911281802
appDevelopmentStage: final

Je pense que c’est lié car pas observé auparavant. Et le test que j’ai fait là c’est de changer l’emplacement, de renommer le fichier avant dépôt et ça n’a pas marché. J’ai eu le même souci avec un item de type grain de contenu dans un autre atelier, il était impossible de modifier de fichier XML dans l’interface de Scenari. La solution trouvée a été de le télécharger de tout virer dans le XML sauf la structure et les méta et déposer puis de redéposer le même fichier sans les suppression. Et bizarrement là ça a fonctionné, et l’édition a pu se faire.

Si vous aviez une piste
merci d’avance

Re bonjour,

J’ai trouvé la solution à mon problème.
Histoire de garder une trace voici les tests que j’ai fait :

  • Récupération des dossier data/db et data/blobs_1 depuis le premier backup antérieur qui ne montrait pas l’erreur. ( c’est à dire que la commande curl -u XXXXX:XXXXX -v https://monserver/scenarier4.2/s/u/adminOdb?cdaction=CheckAuto renvoie un message « Check db auto ok »
  • En fait il s’agissait dans mon cas d’une version datant d’environ une semaine. Et j’avais souvenir d’avoir purgé la corbeille su serveur et également d’avoir supprimé un assez gros atelier (16 Go).
  • J’ai rejoué les manip que j’avais fait la semaine précédente en lançant un CheckAuto régulièrement pour voir si c’était l’une des ces manip qui avait pu perturber la BDD. Et banco, il s’agissait de la suppression de ce gros atelier.
  • J’ai réitéré la démarche depuis le backup mais en supprimant des paquets d’espaces et purgeant la corbeille de l’atelier en question. Et arrivée vers la fin ça a refait la même chose.
  • Je me suis souvenu de la commande de Rebuild curl -u XXXXX:XXXXX -v https://monserver/scenarier4.2/s/u/adminOdb?cdaction=Rebuild que j’ai joué sur cette version nouvellement abimée et ça a réparé la base.
  • J’ai rejoué la commande avec la version la plus récente et ça a fonctionné.

Voilà pour l’histoire.

A retenir donc que de supprimer trop d’items ou que la durée de l’opération est trop longue peut-être peut entrainer une dégradation de la base.

Franck

1 « J'aime »

C’est bon à savoir. @sam tu as vu ça ? Il y a peut-être quelque chose à faire pour rendre le système plus robuste.

Bonjour Franck, Loïc,

De mémoire, ce bug sur la suppression définitive d’un atelier a déjà été corrigé en 5.0 il y a pas mal de temps. Le Rebuild des index de la db était en effet la solution pour résoudre ce problème.

Hello Sylvain,
Content de savoir que j’ai fait ce qui semble être la bonne solution. Merci pour ton retour.
A+