diff options
| author | Stefan Boberg <[email protected]> | 2025-09-29 10:05:47 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-09-29 10:05:47 +0200 |
| commit | cb20bfd59a21e16928508feffa3ff556411aa095 (patch) | |
| tree | 7c9aacab7d40727acc5b038490f59289dd309bcf | |
| parent | make sure trace is configured for all test drivers (#523) (diff) | |
| download | zen-cb20bfd59a21e16928508feffa3ff556411aa095.tar.xz zen-cb20bfd59a21e16928508feffa3ff556411aa095.zip | |
some bug fixes (#522)
* fix for invalid regex in HttpBuildStoreService - triggers with most recent MSVC version
* in GcScheduler don't wait for exit signal if exit has already been requested. this caused extended waits for shutdown in some automated tests on very fast machines, possibly also due to some behaviour change in condition_variable
* speculative fix/workaround for issue with TLS teardown on secondary thread while main was tearing down trace
| -rw-r--r-- | CHANGELOG.md | 6 | ||||
| -rw-r--r-- | src/zenserver/buildstore/httpbuildstore.cpp | 4 | ||||
| -rw-r--r-- | src/zenstore/gc.cpp | 3 | ||||
| -rw-r--r-- | thirdparty/trace/trace.h | 2 |
4 files changed, 11 insertions, 4 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 33b551302..09bf35b3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,10 @@ ## + +- Bugfix: Fixed invalid namespace+bucket regexes in BuildStore (only fired with new MSVC compiler) +- Bugfix: `GcScheduler` could delay shutdown in some situations +- Bugfix: On exit, trace shutdown can happen before all threads completed their TLS cleanup + +## 5.7.2 - Feature: Added `--force` option to `zen builds download` command that forces download of all content ignoring any local state - Feature: Added `zen oplog-download` command to download the oplog body of a cooked output stored in Cloud DDC - Oplog source is specified using one of the following options diff --git a/src/zenserver/buildstore/httpbuildstore.cpp b/src/zenserver/buildstore/httpbuildstore.cpp index 2a3ce41b7..bce993f17 100644 --- a/src/zenserver/buildstore/httpbuildstore.cpp +++ b/src/zenserver/buildstore/httpbuildstore.cpp @@ -48,8 +48,8 @@ HttpBuildStoreService::Initialize() { ZEN_LOG_INFO(LogBuilds, "Initializing Builds Service"); - m_Router.AddPattern("namespace", "([[:alnum:]-_.]+)"); - m_Router.AddPattern("bucket", "([[:alnum:]-_.]+)"); + m_Router.AddPattern("namespace", "([[:alnum:]\\-_.]+)"); + m_Router.AddPattern("bucket", "([[:alnum:]\\-_.]+)"); m_Router.AddPattern("buildid", "([[:xdigit:]]{24})"); m_Router.AddPattern("hash", "([[:xdigit:]]{40})"); diff --git a/src/zenstore/gc.cpp b/src/zenstore/gc.cpp index 185bc2118..050ee3443 100644 --- a/src/zenstore/gc.cpp +++ b/src/zenstore/gc.cpp @@ -2093,10 +2093,11 @@ GcScheduler::SchedulerThread() { ZEN_ASSERT(WaitTime.count() >= 0); std::unique_lock Lock(m_GcMutex); - while (!Timeout) + while (!Timeout && (Status() != GcSchedulerStatus::kStopped)) { std::chrono::seconds ShortWait = Min(WaitTime, ShortWaitTime); bool ShortTimeout = std::cv_status::timeout == m_GcSignal.wait_for(Lock, ShortWait); + if (ShortTimeout) { if (WaitTime > ShortWaitTime) diff --git a/thirdparty/trace/trace.h b/thirdparty/trace/trace.h index 28fe6a66e..a1fce80a6 100644 --- a/thirdparty/trace/trace.h +++ b/thirdparty/trace/trace.h @@ -4316,6 +4316,7 @@ static void Writer_InternalShutdown() return;
}
Writer_WorkerJoin();
+ AtomicStoreRelaxed(&GInitialized, false);
if (GDataHandle)
{
Writer_FlushSendBuffer();
@@ -4335,7 +4336,6 @@ static void Writer_InternalShutdown() GSendBufferCursor = nullptr;
}
#endif
- AtomicStoreRelaxed(&GInitialized, false);
}
void Writer_InternalInitialize()
{
|