Commit 3205f446 authored by jan.koester's avatar jan.koester
Browse files

test

parent 45a57c65
Loading
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -1219,12 +1219,33 @@ namespace authdb {
                auto data = pclient_->retrieve(gid);
                if (data.empty()) {
                    std::cerr << "[SCRUB] group " << gid
                              << " — retrieve returned empty, skipping" << std::endl;
                              << " — retrieve returned empty, skipping (NOT removing)" << std::endl;
                    result.groups_failed++;
                    continue;
                }

                // remove + store ensures correct block placement on all nodes
                // Validate retrieved data before removing the existing blocks.
                // A manifest must have at least a valid AuthHeader + magic + count.
                if (data.size() < sizeof(AuthHeader) + sizeof(uint32_t) + sizeof(uint32_t)) {
                    std::cerr << "[SCRUB] group " << gid
                              << " — retrieved data too small (" << data.size()
                              << " bytes), skipping (NOT removing)" << std::endl;
                    result.groups_failed++;
                    continue;
                }

                // Verify AuthHeader is present
                AuthHeader head;
                std::memcpy(&head, data.data(), sizeof(AuthHeader));
                if (head.start != 0xFE) {
                    std::cerr << "[SCRUB] group " << gid
                              << " — retrieved data has invalid header marker"
                              << ", skipping (NOT removing)" << std::endl;
                    result.groups_failed++;
                    continue;
                }

                // Data is valid — safe to remove and re-store for correct placement
                pclient_->remove(gid);
                pclient_->store(gid, data.data(), data.size());
                result.groups_repaired++;