@cryptotaxi247 / netdata-1 / commits / 7fe3db883

Fix corrupted transaction payload handling during start-up of the database engine. (#6731)

Markos Fountoulakis committed Aug 28, 2019 at 17:52 UTC 7fe3db883aa183ae9927942211d95e1fc04b2531
1 file changed +6 -3
database/engine/journalfile.c
+6 -3
@@ -269,7 +269,6 @@ static void restore_extent_metadata(struct rrdengine_instance *ctx, struct rrden
269 extent = mallocz(sizeof(*extent) + count * sizeof(extent->pages[0]));
270 extent->offset = jf_metric_data->extent_offset;
271 extent->size = jf_metric_data->extent_size;
272 - extent->number_of_pages = count;
272 extent->datafile = journalfile->datafile;
273 extent->next = NULL;
274
@@ -282,7 +281,6 @@ static void restore_extent_metadata(struct rrdengine_instance *ctx, struct rrden
281 error("Unknown page type encountered.");
282 continue;
283 }
285 - ++valid_pages;
284 temp_id = (uuid_t *)jf_metric_data->descr[i].uuid;
285
286 uv_rwlock_rdlock(&pg_cache->metrics_index.lock);
@@ -308,11 +306,16 @@ static void restore_extent_metadata(struct rrdengine_instance *ctx, struct rrden
306 descr->end_time = jf_metric_data->descr[i].end_time;
307 descr->id = &page_index->id;
308 descr->extent = extent;
311 - extent->pages[i] = descr;
309 + extent->pages[valid_pages++] = descr;
310 pg_cache_insert(ctx, page_index, descr);
311 }
312 +
313 + extent->number_of_pages = valid_pages;
314 +
315 if (likely(valid_pages))
316 df_extent_insert(extent);
317 + else
318 + freez(extent);
319 }
320
321 /*