aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2024-11-06 10:03:36 +0100
committerGitHub Enterprise <[email protected]>2024-11-06 10:03:36 +0100
commite608ea78b2d1be7ad9062e13eb9a6a15acab8d3c (patch)
tree3e6f1ff411f8f458cbcc74d9d0b5d3032a6c4ff0
parentproject name list improvement (#211) (diff)
downloadzen-e608ea78b2d1be7ad9062e13eb9a6a15acab8d3c.tar.xz
zen-e608ea78b2d1be7ad9062e13eb9a6a15acab8d3c.zip
Make op key and file path matching in `zen oplog-mirror` case insensitive (#212)
-rw-r--r--CHANGELOG.md1
-rw-r--r--src/zen/cmds/projectstore_cmd.cpp21
2 files changed, 19 insertions, 3 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 647aedd23..c477d6f13 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,7 @@
- Improvement: Verify that oplog has not been deleted from disk behind our back
- Bugfix: If zenserver fails to pick up a request for a sponsor process, make sure to clear the slot
- Bugfix: Fix potential hole where an chunk could be lost during GC if the package referenced a chunk that already existed in store
+- Bugfix: Make op key and file path matching in `zen oplog-mirror` case insensitive
## 5.5.9
- Feature: Added command `zen cache-get` to fetch a cache value/record or an attachment from a cache record
diff --git a/src/zen/cmds/projectstore_cmd.cpp b/src/zen/cmds/projectstore_cmd.cpp
index a0118576b..fed03b707 100644
--- a/src/zen/cmds/projectstore_cmd.cpp
+++ b/src/zen/cmds/projectstore_cmd.cpp
@@ -1813,6 +1813,18 @@ OplogMirrorCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg
}
}
+ if (!m_FilenameFilter.empty())
+ {
+ std::replace(m_FilenameFilter.begin(), m_FilenameFilter.end(), '\\', '/');
+ m_FilenameFilter = ToLower(m_FilenameFilter);
+ }
+
+ if (!m_KeyFilter.empty())
+ {
+ std::replace(m_KeyFilter.begin(), m_KeyFilter.end(), '\\', '/');
+ m_KeyFilter = ToLower(m_KeyFilter);
+ }
+
ZEN_CONSOLE("Emitting file data from oplog '{}/{}' to '{}'", m_ProjectName, m_OplogName, m_MirrorRootPath);
// Emit file data to target directory
@@ -1842,9 +1854,13 @@ OplogMirrorCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg
if (CbObjectView Data = DataIter.AsObjectView())
{
std::filesystem::path FileName(Data["filename"sv].AsU8String());
- if (!m_FilenameFilter.empty() && FileName.string().find(m_FilenameFilter) == std::string::npos)
+ if (!m_FilenameFilter.empty())
{
- continue;
+ std::string FileNameLowerCase = ToLower(FileName.string());
+ if (FileNameLowerCase.find(m_FilenameFilter) == std::string::npos)
+ {
+ continue;
+ }
}
Oid ChunkId = Data["id"sv].AsObjectId();
if (ChunkIdFilter != Oid::Zero && ChunkIdFilter != ChunkId)
@@ -1916,7 +1932,6 @@ OplogMirrorCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** arg
Remaining--;
if (!m_KeyFilter.empty())
{
- // ZEN_CONSOLE("{}", Entry["key"].AsString());
if (Entry["key"].AsString().find(m_KeyFilter) == std::string_view::npos)
{
continue;