Browse Source

Store null claim id in the database for non claimed children (#11036)

Stelios Fragkakis 3 years ago
parent
commit
dc2ccfe5ea
3 changed files with 7 additions and 7 deletions
  1. 1 2
      claim/claim.c
  2. 5 3
      database/sqlite/sqlite_functions.c
  3. 1 2
      streaming/receiver.c

+ 1 - 2
claim/claim.c

@@ -165,8 +165,7 @@ void load_claiming_state(void)
     }
     }
     localhost->aclk_state.claimed_id = claimed_id;
     localhost->aclk_state.claimed_id = claimed_id;
 
 
-    if (likely(claimed_id))
-        store_claim_id(&localhost->host_uuid, &uuid);
+    store_claim_id(&localhost->host_uuid, claimed_id ? &uuid : NULL);
 
 
     rrdhost_aclk_state_unlock(localhost);
     rrdhost_aclk_state_unlock(localhost);
     if (!claimed_id) {
     if (!claimed_id) {

+ 5 - 3
database/sqlite/sqlite_functions.c

@@ -1341,8 +1341,7 @@ failed:
 
 
 #define SQL_STORE_CLAIM_ID  "insert into node_instance " \
 #define SQL_STORE_CLAIM_ID  "insert into node_instance " \
     "(host_id, claim_id, date_created) values (@host_id, @claim_id, strftime('%s')) " \
     "(host_id, claim_id, date_created) values (@host_id, @claim_id, strftime('%s')) " \
-    "on conflict(host_id) do update set node_id = null, claim_id = excluded.claim_id " \
-    "where claim_id <> excluded.claim_id;"
+    "on conflict(host_id) do update set claim_id = excluded.claim_id;"
 
 
 void store_claim_id(uuid_t *host_id, uuid_t *claim_id)
 void store_claim_id(uuid_t *host_id, uuid_t *claim_id)
 {
 {
@@ -1367,7 +1366,10 @@ void store_claim_id(uuid_t *host_id, uuid_t *claim_id)
         goto failed;
         goto failed;
     }
     }
 
 
-    rc = sqlite3_bind_blob(res, 2, claim_id, sizeof(*claim_id), SQLITE_STATIC);
+    if (claim_id)
+        rc = sqlite3_bind_blob(res, 2, claim_id, sizeof(*claim_id), SQLITE_STATIC);
+    else
+        rc = sqlite3_bind_null(res, 2);
     if (unlikely(rc != SQLITE_OK)) {
     if (unlikely(rc != SQLITE_OK)) {
         error_report("Failed to bind claim_id parameter to store node instance information");
         error_report("Failed to bind claim_id parameter to store node instance information");
         goto failed;
         goto failed;

+ 1 - 2
streaming/receiver.c

@@ -131,8 +131,7 @@ PARSER_RC streaming_claimed_id(char **words, void *user, PLUGINSD_ACTION *plugin
         freez(host->aclk_state.claimed_id);
         freez(host->aclk_state.claimed_id);
     host->aclk_state.claimed_id = strcmp(words[2], "NULL") ? strdupz(words[2]) : NULL;
     host->aclk_state.claimed_id = strcmp(words[2], "NULL") ? strdupz(words[2]) : NULL;
 
 
-    if (likely(host->aclk_state.claimed_id))
-        store_claim_id(&host->host_uuid, &uuid);
+    store_claim_id(&host->host_uuid, host->aclk_state.claimed_id ? &uuid : NULL);
 
 
     rrdhost_aclk_state_unlock(host);
     rrdhost_aclk_state_unlock(host);