-
Notifications
You must be signed in to change notification settings - Fork 3.4k
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
[Fix](partial update) Persist partial_update_info in RocksDB in case of BE restart after a partial update has commited #38331
[Fix](partial update) Persist partial_update_info in RocksDB in case of BE restart after a partial update has commited #38331
Conversation
Thank you for your contribution to Apache Doris. Since 2024-03-18, the Document has been moved to doris-website. |
236a525
to
e79f107
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
clang-tidy made some suggestions
|
||
#include "olap/partial_update_info.h" | ||
|
||
#include <gen_cpp/olap_file.pb.h> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
warning: 'gen_cpp/olap_file.pb.h' file not found [clang-diagnostic-error]
#include <gen_cpp/olap_file.pb.h>
^
|
||
struct PartialUpdateInfo { | ||
void init(const TabletSchema& tablet_schema, bool partial_update, | ||
const std::set<string>& partial_update_cols, bool is_strict_mode, | ||
const std::set<std::string>& partial_update_cols, bool is_strict_mode, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
warning: no template named 'set' in namespace 'std' [clang-diagnostic-error]
const std::set<std::string>& partial_update_cols, bool is_strict_mode,
^
@@ -18,6 +18,8 @@ | |||
#ifndef DORIS_BE_SRC_OLAP_ROWSET_ROWSET_META_MANAGER_H | |||
#define DORIS_BE_SRC_OLAP_ROWSET_ROWSET_META_MANAGER_H | |||
|
|||
#include <gen_cpp/olap_file.pb.h> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
warning: 'gen_cpp/olap_file.pb.h' file not found [clang-diagnostic-error]
#include <gen_cpp/olap_file.pb.h>
^
run buildall |
1 similar comment
run buildall |
ad2d9a9
to
efe2ea6
Compare
run buildall |
efe2ea6
to
762e3ef
Compare
run buildall |
68d404b
to
4095139
Compare
run buildall |
4095139
to
f9af921
Compare
f9af921
to
d4b8f3b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
PR approved by at least one committer and no changes requested. |
PR approved by anyone and no changes requested. |
be9266f
to
628fb44
Compare
run buildall |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
PR approved by at least one committer and no changes requested. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
…of BE restart after a partial update has commited (#38331) ## Proposed changes If a partial update has conflict with another load during publish phase, it should combine the two load's data into one to get the corrrect result. This procedure needs partial update info. But If BE crashed after the partial update load has committed, the partial update info will be missing becasuse it's not persisted and will not be restored in `DataDir::load()`. This PR persists partial update info in RocksDB before the txn is commited and remove it after the publish phase. Before #25147, partial update info is persisted with tablet_schema in RocksDB. #25147 split partial update info from tablet schema but forget to handle the persistence logic.
…of BE restart after a partial update has commited (apache#38331) ## Proposed changes If a partial update has conflict with another load during publish phase, it should combine the two load's data into one to get the corrrect result. This procedure needs partial update info. But If BE crashed after the partial update load has committed, the partial update info will be missing becasuse it's not persisted and will not be restored in `DataDir::load()`. This PR persists partial update info in RocksDB before the txn is commited and remove it after the publish phase. Before apache#25147, partial update info is persisted with tablet_schema in RocksDB. apache#25147 split partial update info from tablet schema but forget to handle the persistence logic.
…inter (apache#39066) fix member call on null pointer in apache#38331
…of BE restart after a partial update has commited (#38331) ## Proposed changes If a partial update has conflict with another load during publish phase, it should combine the two load's data into one to get the corrrect result. This procedure needs partial update info. But If BE crashed after the partial update load has committed, the partial update info will be missing becasuse it's not persisted and will not be restored in `DataDir::load()`. This PR persists partial update info in RocksDB before the txn is commited and remove it after the publish phase. Before #25147, partial update info is persisted with tablet_schema in RocksDB. #25147 split partial update info from tablet schema but forget to handle the persistence logic.
… in RocksDB in case of BE restart after a partial update has commited apache#38331" (apache#39078) picks apache#38331 and apache#39066
… in RocksDB in case of BE restart after a partial update has commited apache#38331" (apache#39078) picks apache#38331 and apache#39066
Proposed changes
If a partial update has conflict with another load during publish phase, it should combine the two load's data into one to get the corrrect result. This procedure needs partial update info. But If BE crashed after the partial update load has committed, the partial update info will be missing becasuse it's not persisted and will not be restored in
DataDir::load()
. This PR persists partial update info in RocksDB before the txn is commited and remove it after the publish phase.Before #25147, partial update info is persisted with tablet_schema in RocksDB. #25147 split partial update info from tablet schema but forget to handle the persistence logic.
branch-2.1-pick: #39035
branch-2.0-pick: #39078