Skip to content

Commit da4d63e

Browse files
authored
Fix potential data race: Lock all KV maps during apply_changes, even those which are read-only (#6866)
1 parent 7fec395 commit da4d63e

File tree

1 file changed

+3
-13
lines changed

1 file changed

+3
-13
lines changed

src/kv/apply_changes.h

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,8 @@ namespace ccf::kv
5959

6060
for (auto it = changes.begin(); it != changes.end(); ++it)
6161
{
62-
bool changeset_has_writes = it->second.changeset->has_writes();
63-
if (changeset_has_writes)
64-
{
65-
has_writes = true;
66-
}
67-
if (changeset_has_writes || track_read_versions)
68-
{
69-
it->second.map->lock();
70-
}
62+
has_writes |= it->second.changeset->has_writes();
63+
it->second.map->lock();
7164
}
7265

7366
bool ok = true;
@@ -177,10 +170,7 @@ namespace ccf::kv
177170

178171
for (auto it = changes.begin(); it != changes.end(); ++it)
179172
{
180-
if (it->second.changeset->has_writes() || track_read_versions)
181-
{
182-
it->second.map->unlock();
183-
}
173+
it->second.map->unlock();
184174
}
185175

186176
if (!ok)

0 commit comments

Comments
 (0)