@cryptotaxi247 / netdata-1 / commits / 62d70dc8e

DBENGINE v2 - improvements part 4 (#14285)

do not lock the entire datafile list while a datafile is being deleted

Costa Tsaousis committed Jan 17, 2023 at 21:14 UTC 62d70dc8ecee28a9bfd57b9527ad34d3e37d2a7a
1 file changed +2 -2
database/engine/rrdengine.c
+2 -2
@@ -1231,6 +1231,8 @@ static void datafile_delete(struct rrdengine_instance *ctx, struct rrdengine_dat
1231 char path[RRDENG_PATH_MAX];
1232
1233 uv_rwlock_wrlock(&ctx->datafiles.rwlock);
1234 + datafile_list_delete_unsafe(ctx, datafile);
1235 + uv_rwlock_wrunlock(&ctx->datafiles.rwlock);
1236
1237 journal_file = datafile->journalfile;
1238 datafile_bytes = datafile->pos;
@@ -1238,7 +1240,6 @@ static void datafile_delete(struct rrdengine_instance *ctx, struct rrdengine_dat
1240 deleted_bytes = journalfile_v2_data_size_get(journal_file);
1241
1242 info("DBENGINE: deleting data and journal files to maintain disk quota");
1241 - datafile_list_delete_unsafe(ctx, datafile);
1243 ret = journalfile_destroy_unsafe(journal_file, datafile);
1244 if (!ret) {
1245 journalfile_generate_path(datafile, path, sizeof(path));
@@ -1258,7 +1259,6 @@ static void datafile_delete(struct rrdengine_instance *ctx, struct rrdengine_dat
1259
1260 ctx->disk_space -= deleted_bytes;
1261 info("DBENGINE: reclaimed %u bytes of disk space.", deleted_bytes);
1261 - uv_rwlock_wrunlock(&ctx->datafiles.rwlock);
1262
1263 rrdcontext_db_rotation();
1264 }