[jira] [Created] (HBASE-28041) Rebase HBASE-27389 branch with master

2023-08-23 Thread Wellington Chevreuil (Jira)
Wellington Chevreuil created HBASE-28041:


 Summary: Rebase HBASE-27389 branch with master
 Key: HBASE-28041
 URL: https://issues.apache.org/jira/browse/HBASE-28041
 Project: HBase
  Issue Type: Sub-task
Reporter: Wellington Chevreuil
Assignee: Wellington Chevreuil






--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Resolved] (HBASE-28041) Rebase HBASE-27389 branch with master and fix conflicts

2023-08-23 Thread Wellington Chevreuil (Jira)


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

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

Rebased and fixed conflicts.

> Rebase HBASE-27389 branch with master and fix conflicts
> ---
>
> Key: HBASE-28041
> URL: https://issues.apache.org/jira/browse/HBASE-28041
> Project: HBase
>  Issue Type: Sub-task
>Reporter: Wellington Chevreuil
>Assignee: Wellington Chevreuil
>Priority: Major
>




--
This message was sent by Atlassian Jira
(v8.20.10#820010)


Re: Time for new releases?

2023-08-23 Thread Duo Zhang
Bump.

If the release managers are not available, I could help make the next
2.5.x release.

Thanks.

张铎(Duo Zhang)  于2023年8月15日周二 11:34写道:
>
> HBase 2.5.5 was released at 6.14, it is time for 2.5.6?
>
> For 2.4.18, I prefer we make it after we release 2.6.0.
>
> Thanks.


[jira] [Resolved] (HBASE-28004) Persistent cache map can get corrupt if crash happens midway through the write

2023-08-23 Thread Wellington Chevreuil (Jira)


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

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

> Persistent cache map can get corrupt if crash happens midway through the write
> --
>
> Key: HBASE-28004
> URL: https://issues.apache.org/jira/browse/HBASE-28004
> Project: HBase
>  Issue Type: Sub-task
>Affects Versions: 2.6.0, 3.0.0-alpha-4, 4.0.0-alpha-1
>Reporter: Wellington Chevreuil
>Assignee: Wellington Chevreuil
>Priority: Major
> Fix For: 2.6.0, 3.0.0-beta-1, 4.0.0-alpha-1
>
>
> HBASE-27686 added a background thread for periodically saving the cache index 
> map, together with a list of completed cached files so that we can recover 
> the cache state in case of crash or restart. Problem is that the cache index 
> can become few GB large (a sample case with 1.6TB of used bucket cache would 
> map to between 8GB to 10GB indexes), and these writes take few seconds to 
> complete, causing any RS crash very likely to leave a corrupt index file that 
> can't be recovered when the RS starts again. Worse, since we store the list 
> of cached files on a separate file, this also leads to cache inconsistencies, 
> with files in the list of cached files never cached once the RS is restarted, 
> even though we have no cache index for those and every read ends up going to 
> the FS.
> This task aims to refactor the cache persistent as follows: 
> 1) Write both the list of completely cached files and the cache indexes in a 
> single file, so that we can have this synced atomically;
> 2) When writing the persistent cache file, use a temp name first, then once 
> the write is successfully finished, rename it to the actual name. This way, 
> if crash happens whilst the persistent cache is still being written, the temp 
> file would be corrupt, but we could still recover from the last successful 
> sync, and we would only lose the caching ops since the last sync.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Resolved] (HBASE-28010) Connection attributes can become corrupted on the server side

2023-08-23 Thread Bryan Beaudreault (Jira)


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

Bryan Beaudreault resolved HBASE-28010.
---
Fix Version/s: 3.0.0-beta-1
   Resolution: Fixed

> Connection attributes can become corrupted on the server side
> -
>
> Key: HBASE-28010
> URL: https://issues.apache.org/jira/browse/HBASE-28010
> Project: HBase
>  Issue Type: Bug
>Reporter: Bryan Beaudreault
>Assignee: Ray Mattingly
>Priority: Blocker
> Fix For: 2.6.0, 3.0.0-beta-1
>
>
> In ServerRpcConnection.processOneRpc, it calls processConnectionHeader and 
> then immediately calls callCleanupIfNeeded. The parsing of the ByteBuff into 
> the ConnectionHeader does not copy the bytes. We keep a reference to 
> ConnectionHeader for later use, but since the underlying ByteBuff gets 
> released in callCleanupIfNeeded, later requests can override the memory 
> locations that the ConnectionHeader points at.
> The unit tests we added dont catch this possibly because they don't send 
> enough requests to corrupt the buffers. It happens pretty quickly in a 
> deployed cluster.
> We need to copy the List from the ConnectionHeader into a Map 
> before the buffer is released. This probably means we should remove 
> getConnectionHeader from the RpcCall interface and instead add 
> getConnectionAttributes.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


Re: Branching for 2.6 code line (branch-2.6)

2023-08-23 Thread Bryan Beaudreault
We resolved HBASE-28010, so we should be good to go there now.

On Sun, Aug 20, 2023 at 7:22 AM Bryan Beaudreault 
wrote:

> I made
> https://issues.apache.org/jira/browse/HBASE-28010 a blocker so we don’t
> release a broken new feature. We will have it fixed early this week.
>
> On Fri, Aug 18, 2023 at 11:08 AM Andrew Purtell 
> wrote:
>
>> Let’s do it. We can use the new branch to stabilize for release.
>>
>>  I am back from vacation in two weeks and can then lend time and AWS
>> resources for testing (and presumably fixing).
>>
>> > On Aug 18, 2023, at 10:53 AM, 张铎  wrote:
>> >
>> > HBASE-27947 has been resolved.
>> >
>> > So I think now we are good to cut branch-2.6?
>> >
>> > Another good news is we are also close to fix the WAL value
>> > compression issue in HBASE-28028.
>> >
>> > Thanks.
>> >
>> > Bryan Beaudreault  于2023年6月23日周五 02:47写道:
>> >>
>> >> Thanks!
>> >>
>> >> We're looking into one other emergent issue that we uncovered during
>> the
>> >> rollout of server side TLS on RegionServers. It seems
>> nettyDirectMemory has
>> >> increased substantially when under load with it enabled. Details in
>> >> https://issues.apache.org/jira/browse/HBASE-27947.
>> >>
>> >>
>> >>> On Thu, Jun 22, 2023 at 12:02 PM 张铎(Duo Zhang) > >
>> >>> wrote:
>> >>>
>> >>> PR is ready
>> >>>
>> >>> https://github.com/apache/hbase/pull/5305
>> >>>
>> >>> PTAL.
>> >>>
>> >>> Thanks.
>> >>>
>> >>> 张铎(Duo Zhang)  于2023年6月22日周四 21:40写道:
>> 
>>  Ah, missed your last comment on HBASE-27782.
>> 
>>  Let me take a look.
>> 
>>  Netty has some rules about how the exceptions are passed through the
>>  pipeline(especially the order, forward or backward...) but honestly I
>>  always forget it just a day later after I finished the code...
>> 
>>  Bryan Beaudreault  于2023年6月17日周六 00:43写道:
>> >
>> > In terms of TLS:
>> >
>> > - All of our clients (many thousands) in production are using the
>> > NettyRpcConnection with TLS enabled. However, these clients are
>> >>> currently
>> > connecting to the RegionServer/HMaster through an haproxy process
>> >>> local to
>> > each server which handles SSL termination. So not quite end-to-end
>> yet.
>> > - On the server side, most of our QA environment (a thousand
>> >>> regionservers
>> > and ~200 hmasters) are running it. So these are accepting TLS from
>> >>> clients
>> > and using TLS for intra-cluster communication.
>> >
>> > The migration is tricky for us due to the scale and the fact that we
>> >>> need
>> > to migrate off haproxy at the same time. Hopefully we should have
>> some
>> >>> of
>> > production running end-to-end TLS within the next month or so.
>> >
>> > From what we've seen in QA so far, there have not been any major
>> >>> issues. We
>> > also couldn't discern any performance issues in testing, though we
>> were
>> > comparing against our legacy haproxy setup and can't really compare
>> >>> against
>> > kerberos.
>> >
>> > One outstanding issue is
>> >>> https://issues.apache.org/jira/browse/HBASE-27782,
>> > which we still see periodically. It doesn't seem to cause actual
>> >>> issues,
>> > since the RpcClient still handles it gracefully, but it does cause
>> >>> noise
>> > and may have implications.
>> >
>> > On Fri, Jun 16, 2023 at 11:41 AM 张铎(Duo Zhang) <
>> palomino...@gmail.com>
>> > wrote:
>> >
>> >> So any updates here?
>> >>
>> >> Do we have any good news about the TLS usage in production so we
>> can
>> >> move forward on release 2.6.x?
>> >>
>> >> Thanks.
>> >>
>> >> Andrew Purtell  于2023年4月7日周五 09:37写道:
>> >>>
>> >>> Agreed, that sounds like a good plan.
>> >>>
>> >>> On Wed, Mar 29, 2023 at 7:31 AM 张铎(Duo Zhang) <
>> >>> palomino...@gmail.com>
>> >> wrote:
>> >>>
>>  I think we could follow the old pattern when we cut a new release
>> >> branch.
>>  That is, after the new release branch is cut and the new minor
>> >>> release
>> >> is
>>  out, we will do a final release of the oldest release line and
>> >>> then
>> >> mark it
>>  as EOL.
>> 
>>  So here, I think once we cut branch-2.6 and release 2.6.0, we
>> >>> can do a
>>  final release for 2.4.x and mark 2.4.x as EOL.
>> 
>>  Thanks.
>> 
>>  Bryan Beaudreault  于2023年3月27日周一
>> >>> 09:57写道:
>> 
>> > Primary development on hbase-backup and TLS is complete. There
>> >>> are a
>>  couple
>> > minor things I may want to add to TLS in the future, such as
>> >> pluggable
>>  cert
>> > verification. But those are not needed for initial release IMO.
>> >
>> > We are almost ready integrating hbase-backup in production.
>> >>> We’ve
>> >> fixed a
>> > few minor things (all committed) but otherwise it’s worked
>> >>> well so
>> >> f

[jira] [Created] (HBASE-28042) Snapshot corruptions due to non-atomic rename within same filesystem

2023-08-23 Thread Viraj Jasani (Jira)
Viraj Jasani created HBASE-28042:


 Summary: Snapshot corruptions due to non-atomic rename within same 
filesystem
 Key: HBASE-28042
 URL: https://issues.apache.org/jira/browse/HBASE-28042
 Project: HBase
  Issue Type: Bug
Reporter: Viraj Jasani
Assignee: Viraj Jasani
 Fix For: 2.6.0, 2.4.18, 2.5.6, 3.0.0-beta-1


Sequence of events that can lead to snapshot corruptions:
 # Create snapshot using admin command
 # Active master triggers async snapshot creation
 # If the snapshot operation doesn't complete within 5 min, client gets 
exception

{code:java}
org.apache.hadoop.hbase.snapshot.SnapshotCreationException: Snapshot 
'T1_1691888405683_1691888440827_1' wasn't completed in expectedTime:60 ms   
{code}
 # Client initiates snapshot deletion after this error
 # In the snapshot completion/commit phase, the files are moved from tmp to 
final dir.
 # Snapshot delete and snapshot commit operations can cause corruption by 
leaving incomplete metadata:

 * [Snapshot commit] create 
"/hbase/.hbase-snapshot/T1_1691888405683_1691888440827_1/.snapshotinfo"
 * [Snapshot delete from client]  delete 
"/hbase/.hbase-snapshot/T1_1691888405683_1691888440827_1/.snapshotinfo"
 * [Snapshot commit]  create 
"/hbase/.hbase-snapshot/T1_1691888405683_1691888440827_1/data-manifest"

 

The changes introduced by HBASE-21098 performs atomic rename for hbase 1 but 
not for hbase 2
{code:java}
  public static void completeSnapshot(Path snapshotDir, Path workingDir, 
FileSystem fs,
FileSystem workingDirFs, final Configuration conf)
throws SnapshotCreationException, IOException {
LOG.debug(
  "Sentinel is done, just moving the snapshot from " + workingDir + " to " 
+ snapshotDir);
URI workingURI = workingDirFs.getUri();
URI rootURI = fs.getUri();
if (
  (!workingURI.getScheme().equals(rootURI.getScheme()) || 
workingURI.getAuthority() == null
|| !workingURI.getAuthority().equals(rootURI.getAuthority())
|| workingURI.getUserInfo() == null //always true for hdfs://{cluster}
|| !workingURI.getUserInfo().equals(rootURI.getUserInfo())
|| !fs.rename(workingDir, snapshotDir)) //this condition isn't even 
evaluated due to short circuit above
&& !FileUtil.copy(workingDirFs, workingDir, fs, snapshotDir, true, 
true, conf) // non-atomic rename operation
) {
  throw new SnapshotCreationException("Failed to copy working directory(" + 
workingDir
+ ") to completed directory(" + snapshotDir + ").");
}
  } {code}
whereas for hbase 1
{code:java}
// check UGI/userInfo
if (workingURI.getUserInfo() == null && rootURI.getUserInfo() != null) {
  return true;
}
if (workingURI.getUserInfo() != null &&
!workingURI.getUserInfo().equals(rootURI.getUserInfo())) {
  return true;
}
 {code}
this causes shouldSkipRenameSnapshotDirectories() to return false if workingURI 
and rootURI share the same filesystem, which would always lead to atomic rename:
{code:java}
if ((shouldSkipRenameSnapshotDirectories(workingURI, rootURI)
|| !fs.rename(workingDir, snapshotDir))
 && !FileUtil.copy(workingDirFs, workingDir, fs, snapshotDir, true, true, 
conf)) {
  throw new SnapshotCreationException("Failed to copy working directory(" + 
workingDir
  + ") to completed directory(" + snapshotDir + ").");
} {code}
 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


Re: Time for new releases?

2023-08-23 Thread Andrew Purtell
Yes I think it is about time too.

 I’m back from vacation next week and can do a release then unless you want to 
do it Duo. 

> On Aug 23, 2023, at 9:49 AM, 张铎  wrote:
> 
> Bump.
> 
> If the release managers are not available, I could help make the next
> 2.5.x release.
> 
> Thanks.
> 
> 张铎(Duo Zhang)  于2023年8月15日周二 11:34写道:
>> 
>> HBase 2.5.5 was released at 6.14, it is time for 2.5.6?
>> 
>> For 2.4.18, I prefer we make it after we release 2.6.0.
>> 
>> Thanks.


Re: Time for new releases?

2023-08-23 Thread Duo Zhang
Thanks Andrew.

I think releasing next week is OK, no hurry, enjoy your vacation!

Andrew Purtell  于2023年8月24日周四 06:39写道:
>
> Yes I think it is about time too.
>
>  I’m back from vacation next week and can do a release then unless you want 
> to do it Duo.
>
> > On Aug 23, 2023, at 9:49 AM, 张铎  wrote:
> >
> > Bump.
> >
> > If the release managers are not available, I could help make the next
> > 2.5.x release.
> >
> > Thanks.
> >
> > 张铎(Duo Zhang)  于2023年8月15日周二 11:34写道:
> >>
> >> HBase 2.5.5 was released at 6.14, it is time for 2.5.6?
> >>
> >> For 2.4.18, I prefer we make it after we release 2.6.0.
> >>
> >> Thanks.


Re: Branching for 2.6 code line (branch-2.6)

2023-08-23 Thread Duo Zhang
Let's get HBASE-28028 in too. Since Andrew is still on vacation, let
me find another committer to help review the PR.

Thanks.

Bryan Beaudreault  于2023年8月24日周四 02:23写道:
>
> We resolved HBASE-28010, so we should be good to go there now.
>
> On Sun, Aug 20, 2023 at 7:22 AM Bryan Beaudreault 
> wrote:
>
> > I made
> > https://issues.apache.org/jira/browse/HBASE-28010 a blocker so we don’t
> > release a broken new feature. We will have it fixed early this week.
> >
> > On Fri, Aug 18, 2023 at 11:08 AM Andrew Purtell 
> > wrote:
> >
> >> Let’s do it. We can use the new branch to stabilize for release.
> >>
> >>  I am back from vacation in two weeks and can then lend time and AWS
> >> resources for testing (and presumably fixing).
> >>
> >> > On Aug 18, 2023, at 10:53 AM, 张铎  wrote:
> >> >
> >> > HBASE-27947 has been resolved.
> >> >
> >> > So I think now we are good to cut branch-2.6?
> >> >
> >> > Another good news is we are also close to fix the WAL value
> >> > compression issue in HBASE-28028.
> >> >
> >> > Thanks.
> >> >
> >> > Bryan Beaudreault  于2023年6月23日周五 02:47写道:
> >> >>
> >> >> Thanks!
> >> >>
> >> >> We're looking into one other emergent issue that we uncovered during
> >> the
> >> >> rollout of server side TLS on RegionServers. It seems
> >> nettyDirectMemory has
> >> >> increased substantially when under load with it enabled. Details in
> >> >> https://issues.apache.org/jira/browse/HBASE-27947.
> >> >>
> >> >>
> >> >>> On Thu, Jun 22, 2023 at 12:02 PM 张铎(Duo Zhang)  >> >
> >> >>> wrote:
> >> >>>
> >> >>> PR is ready
> >> >>>
> >> >>> https://github.com/apache/hbase/pull/5305
> >> >>>
> >> >>> PTAL.
> >> >>>
> >> >>> Thanks.
> >> >>>
> >> >>> 张铎(Duo Zhang)  于2023年6月22日周四 21:40写道:
> >> 
> >>  Ah, missed your last comment on HBASE-27782.
> >> 
> >>  Let me take a look.
> >> 
> >>  Netty has some rules about how the exceptions are passed through the
> >>  pipeline(especially the order, forward or backward...) but honestly I
> >>  always forget it just a day later after I finished the code...
> >> 
> >>  Bryan Beaudreault  于2023年6月17日周六 00:43写道:
> >> >
> >> > In terms of TLS:
> >> >
> >> > - All of our clients (many thousands) in production are using the
> >> > NettyRpcConnection with TLS enabled. However, these clients are
> >> >>> currently
> >> > connecting to the RegionServer/HMaster through an haproxy process
> >> >>> local to
> >> > each server which handles SSL termination. So not quite end-to-end
> >> yet.
> >> > - On the server side, most of our QA environment (a thousand
> >> >>> regionservers
> >> > and ~200 hmasters) are running it. So these are accepting TLS from
> >> >>> clients
> >> > and using TLS for intra-cluster communication.
> >> >
> >> > The migration is tricky for us due to the scale and the fact that we
> >> >>> need
> >> > to migrate off haproxy at the same time. Hopefully we should have
> >> some
> >> >>> of
> >> > production running end-to-end TLS within the next month or so.
> >> >
> >> > From what we've seen in QA so far, there have not been any major
> >> >>> issues. We
> >> > also couldn't discern any performance issues in testing, though we
> >> were
> >> > comparing against our legacy haproxy setup and can't really compare
> >> >>> against
> >> > kerberos.
> >> >
> >> > One outstanding issue is
> >> >>> https://issues.apache.org/jira/browse/HBASE-27782,
> >> > which we still see periodically. It doesn't seem to cause actual
> >> >>> issues,
> >> > since the RpcClient still handles it gracefully, but it does cause
> >> >>> noise
> >> > and may have implications.
> >> >
> >> > On Fri, Jun 16, 2023 at 11:41 AM 张铎(Duo Zhang) <
> >> palomino...@gmail.com>
> >> > wrote:
> >> >
> >> >> So any updates here?
> >> >>
> >> >> Do we have any good news about the TLS usage in production so we
> >> can
> >> >> move forward on release 2.6.x?
> >> >>
> >> >> Thanks.
> >> >>
> >> >> Andrew Purtell  于2023年4月7日周五 09:37写道:
> >> >>>
> >> >>> Agreed, that sounds like a good plan.
> >> >>>
> >> >>> On Wed, Mar 29, 2023 at 7:31 AM 张铎(Duo Zhang) <
> >> >>> palomino...@gmail.com>
> >> >> wrote:
> >> >>>
> >>  I think we could follow the old pattern when we cut a new release
> >> >> branch.
> >>  That is, after the new release branch is cut and the new minor
> >> >>> release
> >> >> is
> >>  out, we will do a final release of the oldest release line and
> >> >>> then
> >> >> mark it
> >>  as EOL.
> >> 
> >>  So here, I think once we cut branch-2.6 and release 2.6.0, we
> >> >>> can do a
> >>  final release for 2.4.x and mark 2.4.x as EOL.
> >> 
> >>  Thanks.
> >> 
> >>  Bryan Beaudreault  于2023年3月27日周一
> >> >>> 09:57写道:
> >> 
> >> > Primary development on hbase-backup and TLS 

[jira] [Created] (HBASE-28043) Reduce seeks from beginning of block in StoreFileScanner.seekToPreviousRow

2023-08-23 Thread Becker Ewing (Jira)
Becker Ewing created HBASE-28043:


 Summary: Reduce seeks from beginning of block in 
StoreFileScanner.seekToPreviousRow
 Key: HBASE-28043
 URL: https://issues.apache.org/jira/browse/HBASE-28043
 Project: HBase
  Issue Type: Improvement
Reporter: Becker Ewing
 Attachments: Current_SeekToPreviousRowBehavior.png, 
Proposed_SeekToPreviousRowBehavior.png

Currently, for non-RIV1 DBE encodings, each call to 
[StoreFileScanner.seekToPreviousRow|https://github.com/apache/hbase/blob/89ca7f4ade84c84a246281c71898543b6161c099/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java#L493-L506]
 (a common operation in reverse scans) results in two seeks: 
 # Seek from the beginning of the block to before the given row to find the 
prior row
 # Seek from the beginning of the block to the first cell of the prior row

So if there are "N" rows in a block, a reverse scan through each row results in 
seeking past 2(N-1)! rows.

 

This is a particularly expensive operation for tall tables that have many rows 
in a block.

 

By introducing a state variable "previousRow" to StoreFileScanner, I believe 
that we could modify the seeking algorithm to be:
 # Seek from the beginning of the block to before the given row to find the 
prior row
 # Seek from the beginning of the block to before the row that is before the 
row that was just seeked to (i.e. 2 rows back). _Save_ this as a hint for where 
the prior row is in "previousRow"
 # Reseek from "previousRow" (2 rows back from start) to 1 row back from start 
(to the actual previousRow)

Then the rest of the calls where a "previousRow" is present, you just need to 
seek to the beginning of the block once instead of twice, i.e. 
 # seek from the beginning of the block to right before the beginning of your 
"previousRow" marker. Save this as the new "previousRow" marker
 # Reseek to the next row (i.e. your previous "previousRow" marker)

 

See the attached diagrams for the current and proposed behavior. 

 

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)