From 361409e7e17b1ef77f0f75f398a586a1c18cb7bb Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Wed, 28 Jun 2017 19:43:04 +0200 Subject: [PATCH] F #4809: Compress federated log --- src/raft/FedReplicaManager.cc | 38 ++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/src/raft/FedReplicaManager.cc b/src/raft/FedReplicaManager.cc index 2cdfbbd93d..86e20de635 100644 --- a/src/raft/FedReplicaManager.cc +++ b/src/raft/FedReplicaManager.cc @@ -107,7 +107,17 @@ int FedReplicaManager::apply_log_record(int index, const std::string& sql) std::ostringstream oss; - char * sql_db = logdb->escape_str(sql.c_str()); + std::string * zsql = one_util::zlib_compress(sql, true); + + if ( zsql == 0 ) + { + pthread_mutex_unlock(&mutex); + return -1; + } + + char * sql_db = logdb->escape_str(zsql->c_str()); + + delete zsql; if ( sql_db == 0 ) { @@ -392,18 +402,31 @@ int FedReplicaManager::get_next_record(int zone_id, int& index, int FedReplicaManager::get_log_record(int index, std::string& sql) { + std::string zsql; + ostringstream oss; single_cb cb; oss << "SELECT sqlcmd FROM fed_logdb WHERE log_index = " << index; - cb.set_callback(&sql); + cb.set_callback(&zsql); int rc = logdb->exec_rd(oss, &cb); cb.unset_callback(); + std::string * _sql = one_util::zlib_decompress(zsql, true); + + if ( _sql == 0 ) + { + return -1; + } + + sql = *_sql; + + delete _sql; + return rc; } @@ -413,7 +436,16 @@ int FedReplicaManager::insert_log_record(int index, const std::string& sql) { std::ostringstream oss; - char * sql_db = logdb->escape_str(sql.c_str()); + std::string * zsql = one_util::zlib_compress(sql, true); + + if ( zsql == 0 ) + { + return -1; + } + + char * sql_db = logdb->escape_str(zsql->c_str()); + + delete zsql; if ( sql_db == 0 ) {