Project

General

Profile

Bug #8060

Admin Console login fails every first time (AdminServerImpl.setTargetLive)

Added by Galya B over 2 years ago. Updated 12 months ago.

Status:
Test
Priority:
Normal
Target version:
-
Start date:
Due date:
% Done:

100%

billable:
No
vendor_id:
GCD
case_num:
version_reported:
version_resolved:
production:
No
env_name:
topics:

admin-login-fail-first-attempt.png (89.7 KB) Galya B, 11/20/2023 05:15 AM

8060.patch Magnifier (1.75 KB) Sergey Ivanovskiy, 07/10/2025 03:16 PM

8060_20250710.mkv (838 KB) Sergey Ivanovskiy, 07/10/2025 04:11 PM

History

#1 Updated by Galya B over 2 years ago

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 in src/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

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

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

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

Sergey, the failure occurs when:
  • 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.

Also available in: Atom PDF