@@ -815,6 +815,11 @@ void ADIOS2IOHandlerImpl::writeAttribute(
815815 switch (attributeLayout ())
816816 {
817817 case AttributeLayout::ByAdiosAttributes:
818+ if (parameters.changesOverSteps )
819+ {
820+ // cannot do this
821+ return ;
822+ }
818823 switchType<detail::OldAttributeWriter>(
819824 parameters.dtype , this , writable, parameters);
820825 break ;
@@ -829,6 +834,13 @@ void ADIOS2IOHandlerImpl::writeAttribute(
829834 auto prefix = filePositionToString (pos);
830835
831836 auto &filedata = getFileData (file, IfFileNotOpen::ThrowError);
837+ if (parameters.changesOverSteps &&
838+ filedata.streamStatus ==
839+ detail::BufferedActions::StreamStatus::NoStream)
840+ {
841+ // cannot do this
842+ return ;
843+ }
832844 filedata.requireActiveStep ();
833845 filedata.invalidateAttributesMap ();
834846 m_dirty.emplace (std::move (file));
@@ -2800,6 +2812,7 @@ namespace detail
28002812 " [ADIOS2] Operation requires active step but no step is "
28012813 " left." );
28022814 case AdvanceStatus::OK :
2815+ case AdvanceStatus::RANDOMACCESS :
28032816 // pass
28042817 break ;
28052818 }
@@ -3003,7 +3016,7 @@ namespace detail
30033016 m_IO.DefineAttribute <bool_representation>(
30043017 ADIOS2Defaults::str_usesstepsAttribute, 0 );
30053018 flush ({FlushLevel::UserFlush}, /* writeAttributes = */ false );
3006- return AdvanceStatus::OK ;
3019+ return AdvanceStatus::RANDOMACCESS ;
30073020 }
30083021
30093022 /*
0 commit comments