LSUX6IQR7TBTTCDQAVD3KDAVARLM7SUD7PPVTR5IOKA3BNZDYA7AC BYVRA54QBKHLFOPIRBJKZZI7JYBYHSOK7MIA3TUZTALZQJGG3G7QC JPHDKOMJEDZQYRACBIJ57SJME7IZNLDJY7RB6QR47KG7IL3PG7UAC 24BMQDZAWDQ7VNIA7TIROXSOYLOJBNZ2E4264WHWNJAEN6ZB3UOAC 7LB6QBXYOGU43UDLJDJQZFGT4XDALULXDF3WX3WWHL7X3JTB54CQC BRAESISHTN4IIWUBVDMPDMY7QLMJDKX7GQ7K6NSJN66L5VPWSX3QC A2GL5FOZ3UJ2NM5RPRWTNPFTKLBA54B2UC6UIYO4M3N3RFNC4BTAC EYR3EW6JVHNVLXMI57FUVPHQAHPETBML4H44OGJFHUT54KTTHIGQC 5AIYUMTBY6TFQTBRP3MJ2PYWUMRF57I77NIVWYE74UMEVQMBWZVQC 73YR46NJNYZQKHA3QDJCAZYAKC2CGEF5LIS44NOIPDZU6FX6BDPQC IE2PRAQUCQVFPJ4CAIJRPXXEFC5VBAE3EO5I5FG4XWEDRNONNHKQC HJOEIMLRDVQ2KZI5HGL2HKGBM3AHP7YIKGKDAGFUNKRUXVRB24NAC #pragma once#include <atomic>typedef std::atomic<unsigned long> counter;struct MaintainCount{counter & c;MaintainCount(counter & c) : c(c) { c++; }~MaintainCount() { auto prev = c--; assert(prev); }};MaintainCount(counter & c, std::function<void(unsigned long)> warn) : c(c){warn(++c);}#include <functional>
return MaintainCount(nrActiveDbUpdates, [](unsigned long c) {if (c > 6) {printMsg(lvlError, format("warning: %d concurrent database updates; PostgreSQL may be stalled") % c);}});
if (nrActiveDbUpdates > 6)printError("warning: %d concurrent database updates; PostgreSQL may be stalled", nrActiveDbUpdates.load());return MaintainCount<counter>(nrActiveDbUpdates);