You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by jd...@apache.org on 2017/03/09 00:51:06 UTC
kudu git commit: [sys_catalog] no copying into intermediate
KuduPartialRow
Repository: kudu
Updated Branches:
refs/heads/branch-1.3.x 4f02c9204 -> 7ca33c033
[sys_catalog] no copying into intermediate KuduPartialRow
Use KuduPartialRow::SetStringNoCopy() instead of
KuduPartialRow::SetString() while setting fields for the system catalog
table. Copying the data into the intermediate KuduPartialRow object is
not necessary: the intermediate object is not used once the data is
encoded into the result WriteRequestPB via RowOperationsPBEncoder.
Change-Id: I0dbcb822d8f85e1101846409e90e2e5af0afc4f3
Reviewed-on: http://gerrit.cloudera.org:8080/6315
Tested-by: Alexey Serbin <as...@cloudera.com>
Reviewed-by: David Ribeiro Alves <dr...@apache.org>
(cherry picked from commit 5a24fe6742611c71fe272b37a1fd6afcc089c998)
Reviewed-on: http://gerrit.cloudera.org:8080/6324
Reviewed-by: Jean-Daniel Cryans <jd...@apache.org>
Tested-by: Kudu Jenkins
Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/7ca33c03
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/7ca33c03
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/7ca33c03
Branch: refs/heads/branch-1.3.x
Commit: 7ca33c033d411c41b5c94f5e468e526cced32f62
Parents: 4f02c92
Author: Alexey Serbin <as...@cloudera.com>
Authored: Wed Mar 8 08:09:40 2017 -0800
Committer: Jean-Daniel Cryans <jd...@apache.org>
Committed: Thu Mar 9 00:50:53 2017 +0000
----------------------------------------------------------------------
src/kudu/master/sys_catalog.cc | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kudu/blob/7ca33c03/src/kudu/master/sys_catalog.cc
----------------------------------------------------------------------
diff --git a/src/kudu/master/sys_catalog.cc b/src/kudu/master/sys_catalog.cc
index 1d698ff..2d54fcc 100644
--- a/src/kudu/master/sys_catalog.cc
+++ b/src/kudu/master/sys_catalog.cc
@@ -590,13 +590,12 @@ Status SysCatalogTable::AddCertAuthorityEntry(
KuduPartialRow row(&schema_);
CHECK_OK(row.SetInt8(kSysCatalogTableColType, CERT_AUTHORITY_INFO));
- CHECK_OK(row.SetString(kSysCatalogTableColId, kSysCertAuthorityEntryId));
- CHECK_OK(row.SetString(kSysCatalogTableColMetadata, metadata_buf));
+ CHECK_OK(row.SetStringNoCopy(kSysCatalogTableColId, kSysCertAuthorityEntryId));
+ CHECK_OK(row.SetStringNoCopy(kSysCatalogTableColMetadata, metadata_buf));
RowOperationsPBEncoder enc(req.mutable_row_operations());
enc.Add(RowOperationsPB::INSERT, row);
- RETURN_NOT_OK(SyncWrite(&req, &resp));
- return Status::OK();
+ return SyncWrite(&req, &resp);
}
Status SysCatalogTable::AddTskEntry(const SysTskEntryPB& entry) {
@@ -613,11 +612,14 @@ Status SysCatalogTable::AddTskEntry(const SysTskEntryPB& entry) {
faststring metadata_buf;
pb_util::SerializeToString(entry, &metadata_buf);
+ // This is crucial to keep entry_id alive until its put into the
+ // WriteRequestPB object by RowOperationsPBEncoder.
+ const string entry_id = TskSeqNumberToEntryId(entry.tsk().key_seq_num());
+
KuduPartialRow row(&schema_);
CHECK_OK(row.SetInt8(kSysCatalogTableColType, TSK_ENTRY));
- CHECK_OK(row.SetString(kSysCatalogTableColId,
- TskSeqNumberToEntryId(entry.tsk().key_seq_num())));
- CHECK_OK(row.SetString(kSysCatalogTableColMetadata, metadata_buf));
+ CHECK_OK(row.SetStringNoCopy(kSysCatalogTableColId, entry_id));
+ CHECK_OK(row.SetStringNoCopy(kSysCatalogTableColMetadata, metadata_buf));
RowOperationsPBEncoder enc(req.mutable_row_operations());
enc.Add(RowOperationsPB::INSERT, row);
@@ -633,7 +635,7 @@ Status SysCatalogTable::RemoveTskEntries(const set<string>& entry_ids) {
for (const auto& id : entry_ids) {
KuduPartialRow row(&schema_);
CHECK_OK(row.SetInt8(kSysCatalogTableColType, TSK_ENTRY));
- CHECK_OK(row.SetString(kSysCatalogTableColId, id));
+ CHECK_OK(row.SetStringNoCopy(kSysCatalogTableColId, id));
RowOperationsPBEncoder enc(req.mutable_row_operations());
enc.Add(RowOperationsPB::DELETE, row);
}