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.
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.
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)
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
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.
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ù.
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.
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.
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.