perf: faster builds, leaner daemon, smoother install/run (0.9.20)
Reuse libcstcore.a for tests with -MMD incremental deps; idle-backoff the parliament seat loop; defer curl init and cache settings; add systemd helper. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+27
-4
@@ -139,6 +139,26 @@ int cst_discover_local_put(const char *realm_fp, const char *instance_id,
|
||||
arr = cJSON_CreateArray();
|
||||
cJSON_AddItemToObject(root, "instances", arr);
|
||||
}
|
||||
time_t now = time(NULL);
|
||||
const cJSON *it;
|
||||
cJSON_ArrayForEach(it, arr) {
|
||||
const cJSON *iid = cJSON_GetObjectItemCaseSensitive(it, "iid");
|
||||
const cJSON *rid = cJSON_GetObjectItemCaseSensitive(it, "rid");
|
||||
const cJSON *port = cJSON_GetObjectItemCaseSensitive(it, "port");
|
||||
const cJSON *updated = cJSON_GetObjectItemCaseSensitive(it, "updated");
|
||||
if (!cJSON_IsString(iid) || strcmp(iid->valuestring, instance_id) != 0)
|
||||
continue;
|
||||
if (cJSON_IsString(rid) && !strcmp(rid->valuestring, realm_fp) &&
|
||||
cJSON_IsNumber(port) && port->valueint == peer_port &&
|
||||
cJSON_IsNumber(updated) &&
|
||||
now - (time_t)updated->valuedouble < 60) {
|
||||
/* Same seat advertisement still fresh — skip disk rewrite. */
|
||||
cJSON_Delete(root);
|
||||
pthread_mutex_unlock(&local_mu);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
local_remove_iid(arr, instance_id);
|
||||
cJSON *row = cJSON_CreateObject();
|
||||
cJSON_AddStringToObject(row, "rid", realm_fp);
|
||||
@@ -146,7 +166,7 @@ int cst_discover_local_put(const char *realm_fp, const char *instance_id,
|
||||
cJSON_AddStringToObject(row, "name", name ? name : "");
|
||||
cJSON_AddNumberToObject(row, "port", peer_port);
|
||||
cJSON_AddNumberToObject(row, "pid", (double)os_getpid());
|
||||
cJSON_AddNumberToObject(row, "updated", (double)time(NULL));
|
||||
cJSON_AddNumberToObject(row, "updated", (double)now);
|
||||
cJSON_AddItemToArray(arr, row);
|
||||
int rc = save_local(root);
|
||||
cJSON_Delete(root);
|
||||
@@ -283,12 +303,15 @@ static void *discover_main(void *arg) {
|
||||
cst_discover_t *d = arg;
|
||||
int ticks = 0;
|
||||
while (!d->stop) {
|
||||
if ((ticks++ % 10) == 0) {
|
||||
/* ~100ms recv timeout: beacon every ~5s, rewrite local registry ~60s. */
|
||||
if ((ticks % 50) == 0) {
|
||||
send_beacon(d);
|
||||
(void)cst_discover_local_put(d->realm_fp, d->instance_id, d->name,
|
||||
d->peer_port);
|
||||
if ((ticks / 50) % 12 == 0)
|
||||
(void)cst_discover_local_put(d->realm_fp, d->instance_id, d->name,
|
||||
d->peer_port);
|
||||
ingest_local(d);
|
||||
}
|
||||
ticks++;
|
||||
if (d->sock == DISC_BAD) {
|
||||
struct timespec ts = {0, 100 * 1000 * 1000};
|
||||
nanosleep(&ts, NULL);
|
||||
|
||||
Reference in New Issue
Block a user