Erreur lors d'une désactivation de compte Utilisateur

A nouveau on ne constate pas de pb sur les transitions d’état d’un user sur une instance out of the box de même version que la votre. Et on a pas non plus eu de signalement d’un tel pb chez aucun de nos clients utilisant cette version.

Il y a donc forcément quelque chose de spécifique sur votre instance autour du user comme le suggère plus haut @Francois = des contraintes additionnelles, des attributs additionnels, des relations additionnelles, du code, etc. sans avoir accès à l’intégralité votre paramétrage/code on ne peut pas savoir quoi.

Bref, si vous avez ce genre de choses essayez de les supprimer/inhiber temporairement jusqu’à cerner la cause du pb.

Sinon déployez vous une instance out of the box et vérifiez si vous avez le pb, si oui le pb est peut être au niveau de l’infrastructure déployée (mais j’en doute à priori).

Du coup je ne comprends pas l’erreur quand vous changez de statut sur un User.
Pas de log serveur ? pas de message UI ou dans la console ? (en dehors du fichier null)

Il faudrait effectivement faire un diff entre votre objet User et les droits associés au niveau du state model, avec une instance vierge. Pour voir s’il y a des différences volontaires (custom de l’objet User) ou non (suite à une fausse manip sur User ou ses droits).

Autre question, quel est votre quota de licence en nbre de Users max ?
et le nombre courant d’utilisateur actifs ? (en ouvrant le formulaire de la clé, il est calculé/affiché)
Vous êtes peut-être à la frontière et les activation sont refusées.
Par contre “désactiver” devrait toujours passer car décrémente le count.

En // des investigations, si c’est bloquant, vous pouvez toujours modifier le statut du User par un update SQL direct.

update m_user set usr_active='0 ou 1' where usr_login='xxx'

En faisant attention aux quotas pour ne pas bloquer tous les accès.

Bonjour à vous deux,
merci pour votre aide sur le sujet.
Un autre dysfonctionnement très bloquant vient de nous tomber dessus :

Nous ne pouvons plus nous connecter avec notre utilisateur Designer …
Corentin a pu travailler dessus ce matin, puis il y a un quart d’heure en rafraichissant la page voici le message qu’on a reçu.
Pourtant nous n’avons pas atteint le nombre de licences.

Les différents pbs que vous nous indiquez ne correspondent à rien qu’on connaisse. Typiquement le check de licence n’a jamais posé de pb.

Visiblement il y a quelque chose de “cassé” (volontairement ou involontairement) sur votre instance autour des users et leurs statuts.

Sans accès à votre instance on ne peut pas investiguer précisément.

PS: à tout hasard tentez un arrêt/relance et/ou un clear cache global, etc. mais je doute que ça résolve le fond du pb

David, comment peut-on vous donner accès à notre instance dans ce cas ?
Nous ne pouvons pas rester bloquer sans solution.

Merci

David,
nous avons sollicité Datailor (hébergeur) pour relancer l’instance.
On vous tient au courant

Il faut nous donner son URL et le mot de passe designer (par message privé).

En attendant avez vous essayé un simple arrêt/relance ?

Bonjour David,

Suite au redémarrage de l’instance je vois de nombreux logs comme suit et qui semble correspondre au problème évoqué :

2022-02-17 13:41:58,709|SIMPLICITE|ERROR||http://siparex-simplicite-prod-8b786c99f-vt2qk:8080||ERROR|system|com.simplicite.util.View|setFavicon||Exception:Cannot invoke "java.awt.image.BufferedImage.getHeight(java.awt.image.ImageObserver)" because "image" is null||Unable to resize image to 256
java.lang.NullPointerException: Cannot invoke "java.awt.image.BufferedImage.getHeight(java.awt.image.ImageObserver)" because "image" is null
	at com.simplicite.util.tools.ImageTool.resize(ImageTool.java:113)
	at com.simplicite.util.tools.ImageTool.resizeToPNG(ImageTool.java:100)
	at com.simplicite.util.View.setFavicon(View.java:700)
	at com.simplicite.util.engine.CoreCache.loadViews(CoreCache.java:2093)
	at com.simplicite.util.engine.CoreCache.load(CoreCache.java:283)
	at com.simplicite.util.engine.CoreCache.init(CoreCache.java:179)
	at com.simplicite.util.engine.CoreCache.setInstance(CoreCache.java:109)
	at com.simplicite.util.engine.GrantManager.initGrantCache(GrantManager.java:465)
	at com.simplicite.util.engine.GrantManager.loadGrant(GrantManager.java:712)
	at com.simplicite.util.engine.GrantDirect.init(GrantDirect.java:46)
	at com.simplicite.util.Grant.init(Grant.java:398)
	at com.simplicite.util.Grant.getAdmin(Grant.java:603)
	at com.simplicite.util.Grant.getSystemAdmin(Grant.java:548)
	at com.simplicite.util.engine.Platform.init(Platform.java:239)
	at com.simplicite.webapp.listeners.ApplicationListener.contextInitialized(ApplicationListener.java:38)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4768)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5230)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:696)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1185)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1933)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
	at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1095)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:477)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1618)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:319)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
	at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
	at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:946)
	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(FutureTask.java:264)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263)
	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:927)
	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)

De plus j’ai également les logs suivants qui sont plus inquiétants :

2022-02-17 13:44:23,453|GLOBAL|INFO|2022-02-17 13:44:23,357|SIMPLICITE|ERROR||http://siparex-simplicite-prod-8b786c99f-vt2qk:8080||ECOREDB001|system|com.simplicite.util.engine.ObjectManager|query||Error SQL query: jdbc/simplicite: select count(t.row_id)  from m_user t left outer join hr_service t_hrSalSrvId on (t.hr_sal_srv_id=t_hrSalSrvId.row_id) left outer join m_view t_usr_home_id on (t.usr_home_id=t_usr_home_id.row_id) left outer join m_user t_hrSalId on (t.hr_sal_id=t_hrSalId.row_id) left outer join m_module t_row_module_id on (t.row_module_id=t_row_module_id.row_id) where (t.hr_sal_status='SOON') and (usr_login is not null)
org.postgresql.util.PSQLException: ERROR: column reference "usr_login" is ambiguous
  Position: 385
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2675)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2365)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:355)
	at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:490)
	at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:408)
	at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:166)
	at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:118)
	at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:121)
	at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:121)
	at com.simplicite.util.engine.DBAccess.query(DBAccess.java:622)
	at com.simplicite.util.engine.DBAccess.query(DBAccess.java:441)
	at com.simplicite.util.engine.ObjectManager.getCount(ObjectManager.java:1561)
	at com.simplicite.util.engine.ObjectDirect.getCount(ObjectDirect.java:191)
	at com.simplicite.util.ObjectDB.getCount(ObjectDB.java:640)
	at com.simplicite.util.ObjectHooks.getCount(ObjectHooks.java:415)
	at com.simplicite.util.tools.JSONTool.list(JSONTool.java:2994)
	at com.simplicite.webapp.tools.JSONServletTool.search(JSONServletTool.java:824)
	at com.simplicite.webapp.ObjectJson.search(ObjectJson.java:219)
	at com.simplicite.webapp.tools.JSONServletTool.businessObjectService(JSONServletTool.java:622)
	at com.simplicite.webapp.servlets.AbstractJSONServlet.service(AbstractJSONServlet.java:89)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at com.simplicite.webapp.filters.AuthMethodFilter.doFilter(AuthMethodFilter.java:174)
	at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at com.simplicite.webapp.filters.HTTPHeadersFilter.doFilter(HTTPHeadersFilter.java:39)
	at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at com.simplicite.webapp.filters.RewriteFilter.doFilter(RewriteFilter.java:86)
	at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:183)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
	at com.simplicite.tomcat.valves.APISessionValve.invoke(APISessionValve.java:231)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1735)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:833)

Et qui me semble liés à la mise à jour du driver postgresql

Voici une nouvelle erreur similaire à la précédente :

2022-02-17 13:52:36,667|GLOBAL|INFO|2022-02-17 13:52:36,572|SIMPLICITE|ERROR||http://siparex-simplicite-dev-745fcf686c-rkx55:8080||ECOREDB001|system|com.simplicite.util.engine.ObjectManager|query||Error SQL query: jdbc/simplicite: select count(t.row_id)  from m_user t left outer join hr_service t_hrSalSrvId on (t.hr_sal_srv_id=t_hrSalSrvId.row_id) left outer join m_user t_hrSalId on (t.hr_sal_id=t_hrSalId.row_id) where ((t.usr_login is not null) and (hr_sal_end_date is not null))
org.postgresql.util.PSQLException: ERROR: column reference "hr_sal_end_date" is ambiguous
  Position: 225
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2675)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2365)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:355)
	at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:490)
	at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:408)
	at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:166)
	at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:118)
	at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:121)
	at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:121)
	at com.simplicite.util.engine.DBAccess.query(DBAccess.java:622)
	at com.simplicite.util.engine.DBAccess.query(DBAccess.java:441)
	at com.simplicite.util.engine.ObjectManager.getCount(ObjectManager.java:1561)
	at com.simplicite.util.engine.ObjectDirect.getCount(ObjectDirect.java:191)
	at com.simplicite.util.ObjectDB.getCount(ObjectDB.java:640)
	at com.simplicite.util.ObjectHooks.getCount(ObjectHooks.java:415)
	at com.simplicite.util.tools.JSONTool.list(JSONTool.java:2994)
	at com.simplicite.webapp.tools.JSONServletTool.search(JSONServletTool.java:824)
	at com.simplicite.webapp.ObjectJson.search(ObjectJson.java:219)
	at com.simplicite.webapp.tools.JSONServletTool.businessObjectService(JSONServletTool.java:622)
	at com.simplicite.webapp.servlets.AbstractJSONServlet.service(AbstractJSONServlet.java:89)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at com.simplicite.webapp.filters.AuthMethodFilter.doFilter(AuthMethodFilter.java:174)
	at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at com.simplicite.webapp.filters.HTTPHeadersFilter.doFilter(HTTPHeadersFilter.java:39)
	at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at com.simplicite.webapp.filters.RewriteFilter.doFilter(RewriteFilter.java:86)
	at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:183)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
	at com.simplicite.tomcat.valves.APISessionValve.invoke(APISessionValve.java:231)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)

La dernière erreur :
ERROR: column reference "hr_sal_end_date" is ambiguous
C’est de notre coté pas problème.

Pour les autres erreurs on ne sait pas d’où elles viennent.

Rien à voir avec le driver PostgreSQL.

D’après ces logs il y a visiblement des attributs additionnels sur l’objet système User (ou alors ça correspond à un héritier de SimpleUser ?)

select count(t.row_id) from m_user t
left outer join hr_service t_hrSalSrvId on (t.hr_sal_srv_id=t_hrSalSrvId.row_id)
left outer join m_view t_usr_home_id on (t.usr_home_id=t_usr_home_id.row_id)
left outer join m_user t_hrSalId on (t.hr_sal_id=t_hrSalId.row_id)
left outer join m_module t_row_module_id on (t.row_module_id=t_row_module_id.row_id)
where (t.hr_sal_status=‘SOON’) and (usr_login is not null)

La partie qui pose pb ici est le usr_login non préfixé dans usr_login is not null (une search spec custom ? si oui il faudrait écrire <table alias>.usr_login is not null avec le <table alias> qui va bien dans votre cas)

Bref, il y a des choses atypiques sur le paramétrage de vos objets vs l’objet User qui sont sans doute la cause originelle de vos pbs.

NB: il y a aussi un pb de serach spec du même type qui provoque cette erreur column reference "hr_sal_end_date" is ambiguous

Il faut également mettre un “t” sur “t.usr_login is not null” de l’objet User si vous l’avez retiré :

Nous ne l’avons pas retiré, comme vous pouvez le voir :

Nous avons un objet HrSalarie qui hérite de SimpleUser. Les attributs additionnels découlent de HrSalarie

Si on laisse de coté pour le moment le cas du usr_login is not null, l’autre erreur SQL du même genre causée par la where clause hr_sal_end_date is not null (elle aussi sans le t.) correspond, elle, forcément à une search spec ou un filtre configuré (ou dynamiquement codé) quelque part car c’est un de vos attributs spécifique.

D’après les requêtes SQL qui tombent en erreur ces pbs sont liés à une “relation réflexive” entre objets qui pointent sur la table m_user ce qui rend ambigus les where clauses sur les colonnes non explicitement préfixées avec un alias de table.

C’est sans doute par là que se situe le noeud de votre pb… Sans accès à votre instance on est dans le noir et c’est impossible d’être plus précis dans notre analyse.

Le problème hr_sal_end_date is not null a été résolu. Il reste toujours le problème usr_login is not null sachant que partout ou on utilise des search spec, on a bien l’allias devant t.usr_login is not null.
image

Je continue de chercher en espérant que ça réglera le problème d’activation et de suspension des utilisateurs.

Nous avons cherché au niveau socle et nous n’avons pas trouvé d’endroit où un search spec (ou autre mécanisme de filtrage SQL) serait positionné à usr_login is not null sans le prefix t..

C’est donc sans doute fait quelque part dans votre paramétrage/code.

A nouveau, sans accès à votre instance (ou au moins à votre(vos) module(s)) on ne peut pas vous aider à chercher où.

Bon déjà le pb de displayFile

Ca se produit lors de l’affichage de liste et c’est lié à la miniature de la photo du user cbourgey:

C’est explicable car le format d’image utilisé jfif n’est pas (encore) supporté pour la fabrication de la miniature, du coup ça doit tomber en exception et la miniature doit être vide.

image

On va voir pour prendre en charge ce format d’image (ou à minima lui associer une miniature par défaut).

En tout cas c’est c’est un pb mineur strictement sans aucun impact sur le fonctionnel.

On a réglé ce pb de format d’image en ajoutant le MIME type image/jpeg sur cette extension:

Ce sera inclus par défaut dans la prochaine révision.

1 Like

EN regardant le code je vois qu’il manque de nombreux alias dans les search spec codées, ex:


ce n’est pas le seul.

Préfixer avec un alias explicite est une bonne habitude à prendre pour éviter les ambiguïtés.
Cela pose pb typiquement quand on a des liens réflexifs sur des objets avec la même table.