You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by da...@apache.org on 2017/03/09 00:00:53 UTC
[2/3] kudu git commit: [sys_catalog] no copying into intermediate
KuduPartialRow
[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>
Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/5a24fe67
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/5a24fe67
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/5a24fe67
Branch: refs/heads/master
Commit: 5a24fe6742611c71fe272b37a1fd6afcc089c998
Parents: 62553e0
Author: Alexey Serbin <as...@cloudera.com>
Authored: Wed Mar 8 08:09:40 2017 -0800
Committer: Alexey Serbin <as...@cloudera.com>
Committed: Wed Mar 8 23:16:15 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/5a24fe67/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);
}