Bug #8060
Admin Console login fails every first time (AdminServerImpl.setTargetLive)
100%
History
#1 Updated by Galya B over 2 years ago
- File admin-login-fail-first-attempt.png added
On fresh server start the first attempt to login in the Admin Console with correct credentials always fails:

On consequent logins the issue is not present.
Seems related to changes insrc/com/goldencode/p2j/admin/AdminServerImpl.java. File header note @
- 050 CA 20230803 Invoked DatabaseManager.autoConnect() on setTargetLive(boolean).@ . Commit:
revno: 14765 [merge] committer: Sergey Ivanovskiy <sbi@goldencode.com> branch nick: trunk timestamp: Wed 2023-10-04 15:06:16 +0300 message: Fixed the web admin functionality, committed on behalf of Constantin (refs: #5731)
Stacktrace:
23/11/20 12:07:45.552+0200 | FINER | com.goldencode.p2j.security.SecurityManagerAuthenticator | ThreadName:qtp231055042-63, Session:00000000, Thread:00000003, User: | Received user ID <admin>
23/11/20 12:07:45.552+0200 | FINEST | com.goldencode.p2j.security.SecurityManagerAuthenticator | ThreadName:qtp231055042-63, Session:00000000, Thread:00000003, User: | Received password <admin>
23/11/20 12:07:45.554+0200 | INFO | com.goldencode.p2j.persist.DatabaseManager | ThreadName:qtp231055042-63, Session:00000001, Thread:00000003, User:admin | Connecting to [tstcasedata]
23/11/20 12:07:45.585+0200 | SEVERE | com.goldencode.p2j.persist.ConnectionManager | ThreadName:qtp231055042-63, Session:00000001, Thread:00000003, User:admin | CONNECT failed
java.lang.NullPointerException
at com.goldencode.p2j.ui.LogicalTerminal.init(LogicalTerminal.java:1567)
at com.goldencode.p2j.security.ContextLocal.initializeValue(ContextLocal.java:704)
at com.goldencode.p2j.security.ContextLocal.getImpl(ContextLocal.java:543)
at com.goldencode.p2j.security.ContextLocal.get(ContextLocal.java:453)
at com.goldencode.p2j.ui.LogicalTerminal.locate(LogicalTerminal.java:12506)
at com.goldencode.p2j.ui.LogicalTerminal.getInstance(LogicalTerminal.java:1547)
at com.goldencode.p2j.util.TransactionManager$ContextContainer.obtain(TransactionManager.java:11162)
at com.goldencode.p2j.util.TransactionManager.getTransactionHelper(TransactionManager.java:1745)
at com.goldencode.p2j.util.ProcedureManager$ContextContainer.obtain(ProcedureManager.java:6372)
at com.goldencode.p2j.util.ProcedureManager.getProcedureHelper(ProcedureManager.java:1111)
at com.goldencode.p2j.persist.BufferManager.<init>(BufferManager.java:700)
at com.goldencode.p2j.persist.BufferManager.<init>(BufferManager.java:608)
at com.goldencode.p2j.persist.BufferManager$1.initialValue(BufferManager.java:620)
at com.goldencode.p2j.persist.BufferManager$1.initialValue(BufferManager.java:618)
at com.goldencode.p2j.security.ContextLocal.getImpl(ContextLocal.java:541)
at com.goldencode.p2j.security.ContextLocal.get(ContextLocal.java:453)
at com.goldencode.p2j.persist.BufferManager.get(BufferManager.java:769)
at com.goldencode.p2j.persist.Persistence$Context.<init>(Persistence.java:4549)
at com.goldencode.p2j.persist.Persistence$Context.<init>(Persistence.java:4543)
at com.goldencode.p2j.persist.Persistence$1.initialValue(Persistence.java:760)
at com.goldencode.p2j.persist.Persistence$1.initialValue(Persistence.java:757)
at com.goldencode.p2j.security.ContextLocal.getImpl(ContextLocal.java:541)
at com.goldencode.p2j.security.ContextLocal.get(ContextLocal.java:453)
at com.goldencode.p2j.persist.Persistence.getSingleSQLResult(Persistence.java:2716)
at com.goldencode.p2j.persist.ConnectionManager.getAuthLevel(ConnectionManager.java:2111)
at com.goldencode.p2j.util.MetadataSecurityOps.getAuthLevel(MetadataSecurityOps.java:323)
at com.goldencode.p2j.util.SecurityOps.getDefaultUserid(SecurityOps.java:435)
at com.goldencode.p2j.persist.ConnectionManager.putConnected(ConnectionManager.java:4165)
at com.goldencode.p2j.persist.ConnectionManager.makeConnection(ConnectionManager.java:3630)
at com.goldencode.p2j.persist.ConnectionManager.connect(ConnectionManager.java:3422)
at com.goldencode.p2j.persist.ConnectionManager.connectDbImpl(ConnectionManager.java:3103)
at com.goldencode.p2j.persist.ConnectionManager.connect_(ConnectionManager.java:680)
at com.goldencode.p2j.persist.ConnectionManager.connect(ConnectionManager.java:581)
at com.goldencode.p2j.persist.DatabaseManager.autoConnect(DatabaseManager.java:957)
at com.goldencode.p2j.admin.AdminServerImpl.setTargetLive(AdminServerImpl.java:254)
at com.goldencode.p2j.admin.server.AuthServiceImpl.login(AuthServiceImpl.java:131)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:587)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:760)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:547)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:536)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1592)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1296)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1562)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1211)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:59)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:500)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:386)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:562)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:378)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:543)
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:398)
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:161)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:388)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
at java.lang.Thread.run(Thread.java:750)
23/11/20 12:07:45.586+0200 | WARNING | org.eclipse.jetty.server.handler.ContextHandler.admin | ThreadName:qtp231055042-63 | Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract int com.goldencode.p2j.admin.shared.AuthService.login(java.lang.String,java.lang.String)' threw an unexpected exception: java.lang.NullPointerException
at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:416)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:605)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:333)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:303)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:760)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:547)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:536)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1592)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1296)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1562)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1211)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:59)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:500)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:386)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:562)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:378)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:543)
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:398)
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:161)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:388)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
at java.lang.Thread.run(Thread.java:750)
Caused by: java.lang.NullPointerException
at com.goldencode.p2j.ui.LogicalTerminal.init(LogicalTerminal.java:1567)
at com.goldencode.p2j.security.ContextLocal.initializeValue(ContextLocal.java:704)
at com.goldencode.p2j.security.ContextLocal.getImpl(ContextLocal.java:543)
at com.goldencode.p2j.security.ContextLocal.get(ContextLocal.java:453)
at com.goldencode.p2j.ui.LogicalTerminal.locate(LogicalTerminal.java:12506)
at com.goldencode.p2j.ui.LogicalTerminal.getInstance(LogicalTerminal.java:1547)
at com.goldencode.p2j.util.TransactionManager$ContextContainer.obtain(TransactionManager.java:11162)
at com.goldencode.p2j.util.TransactionManager.getTransactionHelper(TransactionManager.java:1745)
at com.goldencode.p2j.util.ProcedureManager$ContextContainer.obtain(ProcedureManager.java:6372)
at com.goldencode.p2j.util.ProcedureManager.getProcedureHelper(ProcedureManager.java:1111)
at com.goldencode.p2j.persist.BufferManager.<init>(BufferManager.java:700)
at com.goldencode.p2j.persist.BufferManager.<init>(BufferManager.java:608)
at com.goldencode.p2j.persist.BufferManager$1.initialValue(BufferManager.java:620)
at com.goldencode.p2j.persist.BufferManager$1.initialValue(BufferManager.java:618)
at com.goldencode.p2j.security.ContextLocal.getImpl(ContextLocal.java:541)
at com.goldencode.p2j.security.ContextLocal.get(ContextLocal.java:453)
at com.goldencode.p2j.persist.BufferManager.get(BufferManager.java:769)
at com.goldencode.p2j.persist.Persistence$Context.<init>(Persistence.java:4549)
at com.goldencode.p2j.persist.Persistence$Context.<init>(Persistence.java:4543)
at com.goldencode.p2j.persist.Persistence$1.initialValue(Persistence.java:760)
at com.goldencode.p2j.persist.Persistence$1.initialValue(Persistence.java:757)
at com.goldencode.p2j.security.ContextLocal.getImpl(ContextLocal.java:541)
at com.goldencode.p2j.security.ContextLocal.get(ContextLocal.java:453)
at com.goldencode.p2j.persist.Persistence.getSingleSQLResult(Persistence.java:2716)
at com.goldencode.p2j.persist.ConnectionManager.getAuthLevel(ConnectionManager.java:2111)
at com.goldencode.p2j.util.MetadataSecurityOps.getAuthLevel(MetadataSecurityOps.java:323)
at com.goldencode.p2j.util.SecurityOps.getDefaultUserid(SecurityOps.java:435)
at com.goldencode.p2j.persist.ConnectionManager.putConnected(ConnectionManager.java:4165)
at com.goldencode.p2j.persist.ConnectionManager.makeConnection(ConnectionManager.java:3630)
at com.goldencode.p2j.persist.ConnectionManager.connect(ConnectionManager.java:3422)
at com.goldencode.p2j.persist.ConnectionManager.connectDbImpl(ConnectionManager.java:3103)
at com.goldencode.p2j.persist.ConnectionManager.connect_(ConnectionManager.java:680)
at com.goldencode.p2j.persist.ConnectionManager.connect(ConnectionManager.java:581)
at com.goldencode.p2j.persist.DatabaseManager.autoConnect(DatabaseManager.java:957)
at com.goldencode.p2j.admin.AdminServerImpl.setTargetLive(AdminServerImpl.java:254)
at com.goldencode.p2j.admin.server.AuthServiceImpl.login(AuthServiceImpl.java:131)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:587)
... 44 more
#2 Updated by Greg Shah over 2 years ago
Does this need to be in the customer project? It seems like a generic issue.
#3 Updated by Galya B over 2 years ago
Greg Shah wrote:
Does this need to be in the customer project? It seems like a generic issue.
My bad. It's generic.
#4 Updated by Galya B over 2 years ago
Can you move it or I need to create a new one?
#5 Updated by Greg Shah over 2 years ago
- Project changed from Van Meijel to Runtime Infrastructure
#6 Updated by Roger Borrello about 1 year ago
You can see a more recent stack trace here
This is with 9709a_16030
#7 Updated by Sergey Ivanovskiy about 1 year ago
If I understand this code correctly, then this DatabaseManager.autoConnect should be invoked somehow on the user login. On the first login attempt it is failed at LogicalTerminal.init
// initialize the conversation stack for this
Session session = SessionManager.get().getSession();
because at this moment session was null. Does the admin console create a new session with the server side?
#8 Updated by Greg Shah about 1 year ago
- Assignee set to Sergey Ivanovskiy
#10 Updated by Sergey Ivanovskiy about 1 year ago
- Status changed from New to WIP
#11 Updated by Sergey Ivanovskiy about 1 year ago
- reviewer Constantin Asofiei, Hynek Cihlar added
#12 Updated by Sergey Ivanovskiy about 1 year ago
I would not surprise that this issue was due to LegacyLogManagerImpl.
#13 Updated by Sergey Ivanovskiy about 1 year ago
- File 8060.patch
added
Constantin, could you review this patch? DatabaseManager.autoConnect() is invoked on setTargetLive and in this case the required structures became initialized.
#14 Updated by Constantin Asofiei about 1 year ago
Please post the stacktrace for #8060-7. I don't understand how the patch would solve the problem.
#15 Updated by Sergey Ivanovskiy about 1 year ago
- File 8060_20250710.mkv added
Constantin Asofiei wrote:
Please post the stacktrace for #8060-7. I don't understand how the patch would solve the problem.
This issue is not reproduced with this patch. I guess that the security admin was initialized and some dependent code so the error stack trace is not reproduced. Although I do not understand well what was the root cause because removing LegacyLogManager gave the different initialization exception that finally gave the idea to move DatabaseManager.autoConnect() at the end of the target code.
#16 Updated by Sergey Ivanovskiy about 1 year ago
Created 8060a. Please review the rev 16035 (8060a).
#17 Updated by Sergey Ivanovskiy about 1 year ago
- Status changed from WIP to Review
#18 Updated by Sergey Ivanovskiy about 1 year ago
- % Done changed from 0 to 100
#19 Updated by Sergey Ivanovskiy about 1 year ago
Constantin, please review 8060a.
#20 Updated by Constantin Asofiei 12 months ago
- the FWD server is started and no other action is taken (including running appserver agents?)
- you try to login to the Admin Console - with trunk this works only from the second try
Does this scenario get solved by your changes?
#21 Updated by Sergey Ivanovskiy 12 months ago
Yes, these changes oddly fixed the issue.
#22 Updated by Constantin Asofiei 12 months ago
- Status changed from Review to Merge Pending
Please merge now.
#23 Updated by Sergey Ivanovskiy 12 months ago
- Status changed from Merge Pending to Test
The branch 8060a has been merged into the trunk revision 16074 and archived.