You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by du...@apache.org on 2018/08/17 14:13:15 UTC

[trafficserver] branch master updated: make sure "traffic_ctl config reload" only reloads configs that changed

This is an automated email from the ASF dual-hosted git repository.

duke8253 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new 8fd7ee0  make sure "traffic_ctl config reload" only reloads configs that changed
8fd7ee0 is described below

commit 8fd7ee003020cb8c064c5b4702f543148a183a9a
Author: Fei Deng <du...@gmail.com>
AuthorDate: Thu Aug 16 15:08:33 2018 -0500

    make sure "traffic_ctl config reload" only reloads configs that changed
---
 lib/records/P_RecCore.cc | 19 +++++++++++--------
 lib/records/RecUtils.cc  | 32 +++++++++++++++-----------------
 2 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/lib/records/P_RecCore.cc b/lib/records/P_RecCore.cc
index 11d800c..4a8a928 100644
--- a/lib/records/P_RecCore.cc
+++ b/lib/records/P_RecCore.cc
@@ -377,22 +377,25 @@ RecSetRecord(RecT rec_type, const char *name, RecDataT data_type, RecData *data,
       if ((data_type != RECD_NULL) && (r1->data_type != data_type)) {
         err = REC_ERR_FAIL;
       } else {
+        bool rec_updated_p = false;
         if (data_type == RECD_NULL) {
           // If the caller didn't know the data type, they gave us a string
           // and we should convert based on the record's data type.
           ink_release_assert(data->rec_string != nullptr);
-          RecDataSetFromString(r1->data_type, &(r1->data), data->rec_string);
+          rec_updated_p = RecDataSetFromString(r1->data_type, &(r1->data), data->rec_string);
         } else {
-          RecDataSet(data_type, &(r1->data), data);
+          rec_updated_p = RecDataSet(data_type, &(r1->data), data);
         }
 
-        r1->sync_required = REC_SYNC_REQUIRED;
-        if (inc_version) {
-          r1->sync_required |= REC_INC_CONFIG_VERSION;
-        }
+        if (rec_updated_p) {
+          r1->sync_required = REC_SYNC_REQUIRED;
+          if (inc_version) {
+            r1->sync_required |= REC_INC_CONFIG_VERSION;
+          }
 
-        if (REC_TYPE_IS_CONFIG(r1->rec_type)) {
-          r1->config_meta.update_required = REC_UPDATE_REQUIRED;
+          if (REC_TYPE_IS_CONFIG(r1->rec_type)) {
+            r1->config_meta.update_required = REC_UPDATE_REQUIRED;
+          }
         }
 
         if (REC_TYPE_IS_STAT(r1->rec_type) && (data_raw != nullptr)) {
diff --git a/lib/records/RecUtils.cc b/lib/records/RecUtils.cc
index 640f920..1f8637f 100644
--- a/lib/records/RecUtils.cc
+++ b/lib/records/RecUtils.cc
@@ -326,36 +326,36 @@ RecDataDiv(RecDataT type, RecData left, RecData right)
 bool
 RecDataSetFromInt64(RecDataT data_type, RecData *data_dst, int64_t data_int64)
 {
+  RecData data_src;
+
   switch (data_type) {
 #if defined(STAT_PROCESSOR)
   case RECD_FX:
 #endif
   case RECD_INT:
-    data_dst->rec_int = data_int64;
+    data_src.rec_int = data_int64;
     break;
 #if defined(STAT_PROCESSOR)
   case RECD_CONST:
 #endif
   case RECD_FLOAT:
-    data_dst->rec_float = (float)(data_int64);
+    data_src.rec_float = (float)(data_int64);
     break;
   case RECD_STRING: {
     char buf[32 + 1];
-
-    ats_free(data_dst->rec_string);
     snprintf(buf, 32, "%" PRId64 "", data_int64);
-    data_dst->rec_string = ats_strdup(buf);
+    data_src.rec_string = ats_strdup(buf);
     break;
   }
   case RECD_COUNTER:
-    data_dst->rec_counter = data_int64;
+    data_src.rec_counter = data_int64;
     break;
   default:
     ink_assert(!"Unexpected RecD type");
     return false;
   }
 
-  return true;
+  return RecDataSet(data_type, data_dst, &data_src);
 }
 
 //-------------------------------------------------------------------------
@@ -364,36 +364,36 @@ RecDataSetFromInt64(RecDataT data_type, RecData *data_dst, int64_t data_int64)
 bool
 RecDataSetFromFloat(RecDataT data_type, RecData *data_dst, float data_float)
 {
+  RecData data_src;
+
   switch (data_type) {
 #if defined(STAT_PROCESSOR)
   case RECD_FX:
 #endif
   case RECD_INT:
-    data_dst->rec_int = (RecInt)data_float;
+    data_src.rec_int = (RecInt)data_float;
     break;
 #if defined(STAT_PROCESSOR)
   case RECD_CONST:
 #endif
   case RECD_FLOAT:
-    data_dst->rec_float = (float)(data_float);
+    data_src.rec_float = (float)(data_float);
     break;
   case RECD_STRING: {
     char buf[32 + 1];
-
-    ats_free(data_dst->rec_string);
     snprintf(buf, 32, "%f", data_float);
-    data_dst->rec_string = ats_strdup(buf);
+    data_src.rec_string = ats_strdup(buf);
     break;
   }
   case RECD_COUNTER:
-    data_dst->rec_counter = (RecCounter)data_float;
+    data_src.rec_counter = (RecCounter)data_float;
     break;
   default:
     ink_assert(!"Unexpected RecD type");
     return false;
   }
 
-  return true;
+  return RecDataSet(data_type, data_dst, &data_src);
 }
 
 //-------------------------------------------------------------------------
@@ -402,7 +402,6 @@ RecDataSetFromFloat(RecDataT data_type, RecData *data_dst, float data_float)
 bool
 RecDataSetFromString(RecDataT data_type, RecData *data_dst, const char *data_string)
 {
-  bool rec_set;
   RecData data_src;
 
   switch (data_type) {
@@ -433,7 +432,6 @@ RecDataSetFromString(RecDataT data_type, RecData *data_dst, const char *data_str
     ink_assert(!"Unexpected RecD type");
     return false;
   }
-  rec_set = RecDataSet(data_type, data_dst, &data_src);
 
-  return rec_set;
+  return RecDataSet(data_type, data_dst, &data_src);
 }