-
Notifications
You must be signed in to change notification settings - Fork 129
Open
Description
trino-gateway may fail with an unhandled NPE if it's unable to find the routing group for a particular query ID.
jakarta.servlet.ServletException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.NullPointerException
...
at java.base/java.lang.Thread.run(Thread.java:1447)
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.NullPointerException
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2074)
at com.google.common.cache.LocalCache.get(LocalCache.java:3986)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4007)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4946)
at io.trino.gateway.ha.router.RoutingManager.findRoutingGroupForQueryId(RoutingManager.java:194)
at java.base/java.util.Optional.map(Optional.java:260)
at io.trino.gateway.ha.handler.RoutingTargetHandler.lambda$resolveRouting$0(RoutingTargetHandler.java:86)
at java.base/java.util.Optional.map(Optional.java:260)
at io.trino.gateway.ha.handler.RoutingTargetHandler.resolveRouting(RoutingTargetHandler.java:85)
at io.trino.gateway.proxyserver.RouteToBackendResource.postHandler(RouteToBackendResource.java:67)
...
... 37 more
Caused by: java.lang.NullPointerException
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:902)
at com.google.common.cache.LocalCache.put(LocalCache.java:4212)
at com.google.common.cache.LocalCache$LocalManualCache.put(LocalCache.java:4872)
at io.trino.gateway.ha.router.RoutingManager.setRoutingGroupForQueryId(RoutingManager.java:122)
at io.trino.gateway.ha.router.RoutingManager.findRoutingGroupForUnknownQueryId(RoutingManager.java:264)
at io.trino.gateway.ha.router.RoutingManager$2.load(RoutingManager.java:85)
at io.trino.gateway.ha.router.RoutingManager$2.load(RoutingManager.java:81)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3551)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2302)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2177)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2068)
... 66 more
Essentially, findRoutingGroupForQueryId may return null (e.g. if the query has already been removed from history), in which case LocalCache.put will fail due to null value.
Metadata
Metadata
Assignees
Labels
No labels