Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hrpc/snapshot: keep version unset if not specified #243

Merged
merged 1 commit into from
Dec 12, 2023
Merged

Conversation

dethi
Copy link
Collaborator

@dethi dethi commented Dec 12, 2023

HBase has 2 snapshot formats: version 0 and version 2. Version 2 is more efficient as it doesn't require the creation of thousand of empty files and instead create a single manifest file[1].

The snapshot format version is dependent of the SnapshotDescription. When the version is not set, HBase will use the default version. In HBase 1.x/2.x, the default version is 2.

Unfortunately, gohbase implementation always set the version to 0, even when the caller didn't explicitly set the version. This is is because internally gohbase use an int32 (not a pointer) which default to 0 implicitly.

This change switch the internal storage to a pointer, to match the "optional" behaviour on the protobuf side.

[1] More details at:

Copy link

codecov bot commented Dec 12, 2023

Codecov Report

Attention: 2 lines in your changes are missing coverage. Please review.

Comparison is base (642db04) 70.22% compared to head (0279695) 70.12%.

Files Patch % Lines
hrpc/snapshot.go 0.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #243      +/-   ##
==========================================
- Coverage   70.22%   70.12%   -0.11%     
==========================================
  Files          27       27              
  Lines        3782     3782              
==========================================
- Hits         2656     2652       -4     
- Misses       1005     1010       +5     
+ Partials      121      120       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

HBase has 2 snapshot formats: version 0 and version 2. Version 2
is more efficient as it doesn't require the creation of thousand of
empty files and instead create a single manifest file[1].

The snapshot format version is dependent of the SnapshotDescription.
When the version is not set, HBase will use the default version. In
HBase 1.x/2.x, the default version is 2.

Unfortunately, gohbase implementation always set the version to 0, even
when the caller didn't explicitly set the version. This is is because
internally gohbase use an int32 (not a pointer) which default to 0
implicitly.

This change switch the internal storage to a pointer, to match the
"optional" behaviour on the protobuf side.

[1] More details at:
- https://issues.apache.org/jira/browse/HBASE-7987
- apache/hbase@a669c76
@tsuna tsuna merged commit c88d187 into master Dec 12, 2023
2 of 4 checks passed
@tsuna tsuna deleted the snapshot branch December 12, 2023 14:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants