GoogleCloudPlatform / appengine-java-standard

Google App Engine Standard Java runtime: Prod runtime, local devappserver, Cloud SDK Java components, GAE APIs, and GAE API emulators.
Apache License 2.0
199 stars 45 forks source link

Java 21 regression bug: in a .jsp, request.getUserPrincipal() returns null despite being logged in #241

Closed cyril-briquet closed 3 months ago

cyril-briquet commented 3 months ago

When setting java21 in appengine-web.xml, in a .jsp, the call request.getUserPrincipal() returns null despite being logged in.

ludoch commented 3 months ago

Both prod and local server?

cyril-briquet commented 3 months ago

Local server yes; production server I haven't tried.

cyril-briquet commented 3 months ago

Both prod and local server?

I've just tried on a prod server: the answer is yes, both indeed.

lachlan-roberts commented 3 months ago

Opened PR https://github.com/GoogleCloudPlatform/appengine-java-standard/pull/243 to fix this.

ludoch commented 3 months ago

Code fix is now checked in. Will reach prod end of next week or next (due to 4rth of July break in US). Meanwhile, you can try following for the next few days https://github.com/GoogleCloudPlatform/appengine-java-standard/blob/main/TRYLATESTBITSINPROD.md from head (Sorry, Maven only, gradle contribution welcome).

cyril-briquet commented 1 month ago

Update: bug is fixed in local devserver, but not in production server

ludoch commented 1 month ago

A bit strange as the code area for the fix also applies to prod... Maybe one thing to try first is to go to the admin console, app engine instances page and try to kill whatever running instance you see to force a restart?

Restarts are not automatically done anymore...

cyril-briquet commented 1 month ago

Thanks for your rapid answer.

As suggested, I went to the admin console, AE instances page and killed the one instance that was running (apparently, it always restarts automatically even before I try to access the app in production as a user).

FWIW, here is the code that correctly displays the user's e-mail with the dev server and null with the prod server:

<%= (request.getUserPrincipal() != null) ? request.getUserPrincipal().getName() : "null" %>

ludoch commented 1 month ago

Thanks! Sorry about that, we believe https://github.com/GoogleCloudPlatform/appengine-java-standard/commit/3d53db96078ba1e79ca64dfdceabcff5e711bf60 should address it. Tested only manually, looking for a prod e2e test...

cyril-briquet commented 1 month ago

test-files.txt

Please find here as an attached file the source code of a test web app exercising the bug

cyril-briquet commented 1 week ago

Works for me: bug not observed any more on the production server. Thanks for the patches.