[jira] [Resolved] (HBASE-26174) Make rpc connection registry the default registry on 3.0.0

2021-08-20 Thread Duo Zhang (Jira)


 [ 
https://issues.apache.org/jira/browse/HBASE-26174?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Duo Zhang resolved HBASE-26174.
---
Fix Version/s: 3.0.0-alpha-2
 Hadoop Flags: Reviewed
 Release Note: Now RpcConnectionRegistry is the default ConnectionRegistry.
 Assignee: Duo Zhang
   Resolution: Fixed

> Make rpc connection registry the default registry on 3.0.0
> --
>
> Key: HBASE-26174
> URL: https://issues.apache.org/jira/browse/HBASE-26174
> Project: HBase
>  Issue Type: Sub-task
>  Components: Client
>Reporter: Duo Zhang
>Assignee: Duo Zhang
>Priority: Major
> Fix For: 3.0.0-alpha-2
>
>




--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Resolved] (HBASE-26181) Region server and master could use itself as ConnectionRegistry

2021-08-20 Thread Duo Zhang (Jira)


 [ 
https://issues.apache.org/jira/browse/HBASE-26181?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Duo Zhang resolved HBASE-26181.
---
Hadoop Flags: Reviewed
Assignee: Duo Zhang
  Resolution: Fixed

Pushed to master.

Thanks [~bharathv] for reviewing.

> Region server and master could use itself as ConnectionRegistry
> ---
>
> Key: HBASE-26181
> URL: https://issues.apache.org/jira/browse/HBASE-26181
> Project: HBase
>  Issue Type: Sub-task
>  Components: master, regionserver
>Reporter: Duo Zhang
>Assignee: Duo Zhang
>Priority: Major
>
> As they already cached everything for connection registry in memory, the 
> cluster connection can fetch the in memory data directly instead of go to 
> zookeeper again.
> This is an optimization to reduce the pressure on zookeeper.
> For MasterRegistry, we do not want to use it as the ConnectionRegistry for 
> our cluster connection because:
> // We use ZKConnectionRegistry for all the internal communication, 
> primarily for these reasons:
> // - Decouples RS and master life cycles. RegionServers can continue be 
> up independent of
> //   masters' availability.
> // - Configuration management for region servers (cluster internal) is 
> much simpler when adding
> //   new masters or removing existing masters, since only clients' config 
> needs to be updated.
> // - We need to retain ZKConnectionRegistry for replication use anyway, 
> so we just extend it for
> //   other internal connections too.
> The above comments are in our code, in the HRegionServer.cleanupConfiguration 
> method.
> But since now, masters and regionservers both implement the ClientMetaService 
> interface, we are free to just let the ConnectionRegistry to make use of 
> these in memory information directly, instead of going to zookeeper again.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Resolved] (HBASE-26184) TestTableSnapshotScanner.testMergeRegion error message is misleading.

2021-08-20 Thread Wellington Chevreuil (Jira)


 [ 
https://issues.apache.org/jira/browse/HBASE-26184?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Wellington Chevreuil resolved HBASE-26184.
--
Resolution: Fixed

Merged to master branch.

> TestTableSnapshotScanner.testMergeRegion error message is misleading.
> -
>
> Key: HBASE-26184
> URL: https://issues.apache.org/jira/browse/HBASE-26184
> Project: HBase
>  Issue Type: Bug
>Affects Versions: 3.0.0-alpha-1, 2.4.5
>Reporter: Wellington Chevreuil
>Assignee: Wellington Chevreuil
>Priority: Minor
> Fix For: 3.0.0-alpha-2
>
>
> In case of any exception thrown, this test wrongly reports a FNFE:
> {noformat}
> ... 
>     } catch (Exception e) {
>        LOG.error("scan snapshot error", e);
>        Assert.fail("Should not throw FileNotFoundException"); 
>        Assert.assertTrue(e.getCause() != null);
>        Assert.assertTrue(e.getCause().getCause() instanceof 
> FileNotFoundException);
>      } finally {
> ...{noformat}
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (HBASE-26211) [hbase-connectors] Pushdown filters in Spark do not work correctly with long types

2021-08-20 Thread Hristo Iliev (Jira)
Hristo Iliev created HBASE-26211:


 Summary: [hbase-connectors] Pushdown filters in Spark do not work 
correctly with long types
 Key: HBASE-26211
 URL: https://issues.apache.org/jira/browse/HBASE-26211
 Project: HBase
  Issue Type: Bug
  Components: hbase-connectors
Affects Versions: 1.0.0
Reporter: Hristo Iliev


Reading from an HBase table and filtering on a LONG column does not seem to 
work correctly.

{{Dataset df = spark.read()
   .format("org.apache.hadoop.hbase.spark")
   .option("hbase.columns.mapping", "id STRING :key, v LONG cf:v")
   ...
   .load();
 df.filter("v > 100").show();}}

Expected behaviour is to show rows where cf:v > 100, but instead an empty 
dataset is shown.

Moreover, replacing {{"v > 100"}} with {{"v >= 100"}} results in a dataset 
where some rows have values of v less than 100. 

The problem appears to be that long values are decoded incorrectly as integers 
in {{NaiveEncoder.filter}}:

{{case LongEnc | TimestampEnc =>
   val in = Bytes.toInt(input, offset1)
   val value = Bytes.toInt(filterBytes, offset2 + 1)
   compare(in.compareTo(value), ops)}}

It looks like that error hasn’t been caught because 
{{DynamicLogicExpressionSuite}} lack test cases with long values.

The erroneous code is also present in the master branch. We have extended the 
test suite and implemented a quick fix and will PR on GitHub.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (HBASE-26212) Allow AuthUtil automatic renewal to be disabled

2021-08-20 Thread Josh Elser (Jira)
Josh Elser created HBASE-26212:
--

 Summary: Allow AuthUtil automatic renewal to be disabled
 Key: HBASE-26212
 URL: https://issues.apache.org/jira/browse/HBASE-26212
 Project: HBase
  Issue Type: Improvement
  Components: Client, security
Reporter: Josh Elser
Assignee: Josh Elser


Talking with [~bbende] who was looking at some "spam" in the NiFi log where 
AuthUtil was complaining that it couldn't renew the UGI. This is did not cause 
him problems (NiFi could always read/write to HBase), but it generated a lot of 
noise in the NiFi log.

NiFi is special in that it's managing renewals on its own (for all services it 
can communicate with), rather than letting each client do it on its own. 
Specifically, one way they do this is by doing a keytab-based login via JAAS, 
constructing a UGI object from that JAAS login, and then invoking HBase in a 
normal UGI.doAs().

The problem comes in that AuthUtil _thinks_ that it is capable of renewing this 
UGI instance on its own. AuthUtil can determine that the current UGI came from 
a keytab, and thus thinks that it can renew it. However, this actually fails 
because the LoginContext inside UGI *isn't* actually something that UGI can 
renew (remember: because NiFI did it directly via JAAS and not via UGI)
{noformat}
2021-08-19 17:32:19,438 ERROR [Relogin service.Chore.1] 
org.apache.hadoop.hbase.AuthUtil Got exception while trying to refresh 
credentials: loginUserFromKeyTab must be done first
java.io.IOException: loginUserFromKeyTab must be done first
at 
org.apache.hadoop.security.UserGroupInformation.reloginFromKeytab(UserGroupInformation.java:1194)
at 
org.apache.hadoop.security.UserGroupInformation.checkTGTAndReloginFromKeytab(UserGroupInformation.java:1125)
at org.apache.hadoop.hbase.AuthUtil$1.chore(AuthUtil.java:206) 
{noformat}
After talking with Bryan about this: we don't see a good way for HBase to 
detect this specific "A UGI instance, but not created by UGI" case because the 
LoginContext inside UGI is private. It is great that AuthUtil will 
automatically try to renew keytab logins, even if not using 
{{hbase.client.keytab.file}} and {{hbase.client.keytab.principal}}, so I don't 
want to break that functionality{{.}}

NiFi is unique in this case that it is fully managing the renewals, so I think 
the best path forward is to add an option which lets NiFi disable AuthUtil 
since it knows it can safely do this. This should affect any others users (but 
also give us an option if AuthUtil ever does cause problems).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Resolved] (HBASE-26089) Support RegionCoprocessor on CompactionServer

2021-08-20 Thread Yulin Niu (Jira)


 [ 
https://issues.apache.org/jira/browse/HBASE-26089?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yulin Niu resolved HBASE-26089.
---
Resolution: Fixed

> Support RegionCoprocessor on CompactionServer
> -
>
> Key: HBASE-26089
> URL: https://issues.apache.org/jira/browse/HBASE-26089
> Project: HBase
>  Issue Type: Sub-task
>Reporter: Yulin Niu
>Assignee: Yulin Niu
>Priority: Major
>
> We have two kinds of RegionCoprocessor: CoreCoprocessor or not.
> 1.The CoreCoprocessor(AccessController, TokenProvider, 
> SecureBulkLoadEndpoint...),  They have RegionEnvironmentForCoreCoprocessors 
> which expose RegionServerServices. And they involve authorization, 
> permission, etc, We don't need to support these CoreCoprocessor on 
> compactionServer
>  2. Not CoreCoprocessor: They have RegionEnvironment which do not expose 
> RegionServerServices, only offer Connection/ OnlineRegions, We can propose 
> RegionEnvironmentOnCS, offer Connection, but the OnlineRegions may leave to 
> discuss



--
This message was sent by Atlassian Jira
(v8.3.4#803005)