[
https://issues.apache.org/jira/browse/PHOENIX-7947?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrew Kyle Purtell updated PHOENIX-7947:
-----------------------------------------
Description: {{GlobalConnectionTenantTableIT}} has three deterministically
failing tests that all throw the same NPE ("Cannot invoke
"java.lang.Long.longValue()" because "timestamp" is null at
PhoenixConnection.java:643"). The root cause is in
{{PhoenixConnection.getTable(@Nullable String tenantId, String fullTableName,
@Nullable Long timestamp)}}. Its documented contract says a null timestamp
means "use the cache, fall back to a server lookup on miss," and the cache hit
path honors that, but the cache miss catch dispatches to
{{getTableNoCache(PName, String, long)}} whose third parameter is a primitive
long, so when {{timestamp == null}} the JVM auto-unboxes the null {{Long}} and
throws a NPE.
> GlobalConnectionTenantTableIT NPE when auto-unboxing
> ----------------------------------------------------
>
> Key: PHOENIX-7947
> URL: https://issues.apache.org/jira/browse/PHOENIX-7947
> Project: Phoenix
> Issue Type: Sub-task
> Components: test
> Reporter: Andrew Kyle Purtell
> Assignee: Andrew Kyle Purtell
> Priority: Minor
> Fix For: 5.4.0, 5.3.2
>
>
> {{GlobalConnectionTenantTableIT}} has three deterministically failing tests
> that all throw the same NPE ("Cannot invoke "java.lang.Long.longValue()"
> because "timestamp" is null at PhoenixConnection.java:643"). The root cause
> is in {{PhoenixConnection.getTable(@Nullable String tenantId, String
> fullTableName, @Nullable Long timestamp)}}. Its documented contract says a
> null timestamp means "use the cache, fall back to a server lookup on miss,"
> and the cache hit path honors that, but the cache miss catch dispatches to
> {{getTableNoCache(PName, String, long)}} whose third parameter is a primitive
> long, so when {{timestamp == null}} the JVM auto-unboxes the null {{Long}}
> and throws a NPE.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)