Skip to content

Commit fb9e221

Browse files
committed
Fix flushing logic
1 parent 4439210 commit fb9e221

5 files changed

Lines changed: 18 additions & 11 deletions

File tree

include/openPMD/RecordComponent.tpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ RecordComponent::storeChunk(Offset o, Extent e, F &&createBuffer)
134134
dCreate.name = Attributable::get().m_writable.ownKeyWithinParent;
135135
IOHandler()->enqueue(IOTask(this, dCreate));
136136

137-
setWritten(true, EnqueueAsynchronously::Yes);
137+
setWritten(true, EnqueueAsynchronously::OnlyAsync);
138138
}
139139

140140
IOHandler()->enqueue(IOTask(this, getBufferView));

include/openPMD/backend/Attributable.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -589,9 +589,10 @@ OPENPMD_protected
589589
{
590590
return writable().written;
591591
}
592-
enum class EnqueueAsynchronously : bool
592+
enum class EnqueueAsynchronously : uint8_t
593593
{
594-
Yes,
594+
OnlyAsync,
595+
Both,
595596
No
596597
};
597598
/*

src/Iteration.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ void Iteration::flushFileBased(
256256
* If it was written before, then in the context of another iteration.
257257
*/
258258
auto &attr = s.get().m_rankTable.m_attributable;
259-
attr.setWritten(false, Attributable::EnqueueAsynchronously::Yes);
259+
attr.setWritten(false, Attributable::EnqueueAsynchronously::Both);
260260
s.get()
261261
.m_rankTable.m_attributable.get()
262262
.m_writable.abstractFilePosition.reset();
@@ -853,7 +853,7 @@ auto Iteration::beginStep(
853853
{
854854
bool previous = series.iterations.written();
855855
series.iterations.setWritten(
856-
false, Attributable::EnqueueAsynchronously::Yes);
856+
false, Attributable::EnqueueAsynchronously::Both);
857857
auto oldStatus = IOHandl->m_seriesStatus;
858858
IOHandl->m_seriesStatus = internal::SeriesStatus::Parsing;
859859
try
@@ -870,7 +870,7 @@ auto Iteration::beginStep(
870870
}
871871
IOHandl->m_seriesStatus = oldStatus;
872872
series.iterations.setWritten(
873-
previous, Attributable::EnqueueAsynchronously::Yes);
873+
previous, Attributable::EnqueueAsynchronously::Both);
874874
}
875875
else if (thisObject.has_value())
876876
{

src/Series.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1503,9 +1503,9 @@ void Series::flushFileBased(
15031503
* current iteration by the backend)
15041504
*/
15051505
this->setWritten(
1506-
false, Attributable::EnqueueAsynchronously::Yes);
1506+
false, Attributable::EnqueueAsynchronously::Both);
15071507
series.iterations.setWritten(
1508-
false, Attributable::EnqueueAsynchronously::Yes);
1508+
false, Attributable::EnqueueAsynchronously::Both);
15091509

15101510
setDirty(dirty() || it->second.dirty());
15111511
std::string filename = iterationFilename(it->first);
@@ -1996,7 +1996,7 @@ void Series::readOneIterationFileBased(std::string const &filePath)
19961996
setWritten(false, Attributable::EnqueueAsynchronously::No);
19971997
setIterationEncoding_internal(
19981998
encoding_out, internal::default_or_explicit::explicit_);
1999-
setWritten(old_written, Attributable::EnqueueAsynchronously::Yes);
1999+
setWritten(old_written, Attributable::EnqueueAsynchronously::Both);
20002000
}
20012001
else
20022002
throw std::runtime_error(

src/backend/Attributable.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -524,12 +524,18 @@ void Attributable::setWritten(bool val, EnqueueAsynchronously ea)
524524
switch (ea)
525525
{
526526

527-
case EnqueueAsynchronously::Yes: {
527+
case EnqueueAsynchronously::OnlyAsync: {
528528
Parameter<Operation::SET_WRITTEN> param;
529529
param.target_status = val;
530530
IOHandler()->enqueue(IOTask(this, param));
531+
return;
532+
}
533+
case EnqueueAsynchronously::Both: {
534+
Parameter<Operation::SET_WRITTEN> param;
535+
param.target_status = val;
536+
IOHandler()->enqueue(IOTask(this, param));
537+
break;
531538
}
532-
break;
533539
case EnqueueAsynchronously::No:
534540
break;
535541
}

0 commit comments

Comments
 (0)