@@ -229,8 +229,6 @@ public void clean(final SequenceContext sequenceContext, boolean force) {
229229 this .sequences .get (sequenceContext .getId ()).removeIf (sequence -> {
230230 if (sequence .getState ().equals (Sequence .State .FINISHED )) return force ;
231231
232- sequence .getState ().update (sequence );
233-
234232 return force || sequence .getState ().equals (Sequence .State .EXPIRED );
235233 });
236234 }
@@ -246,6 +244,9 @@ public boolean _invokeObserver(final T event, final Sequence<T> sequence, final
246244
247245 final Sequence .State sequenceState = sequence .getState ();
248246
247+ // Check for an updated state first.
248+ sequenceState .update (sequence );
249+
249250 if (!sequenceState .isSafe ()) {
250251 remove = true ;
251252 }
@@ -272,6 +273,9 @@ public boolean _invokeAfter(final Sequence<T> sequence, final SequenceContext se
272273
273274 final Sequence .State sequenceState = sequence .getState ();
274275
276+ // Check for an updated state first.
277+ sequenceState .update (sequence );
278+
275279 if (!sequenceState .isSafe ()) {
276280 remove = true ;
277281 }
@@ -298,6 +302,9 @@ public boolean _invokeScheduler(final Sequence<T> sequence, final SequenceContex
298302
299303 final Sequence .State sequenceState = sequence .getState ();
300304
305+ // Check for an updated state first.
306+ sequenceState .update (sequence );
307+
301308 if (!sequenceState .isSafe ()) {
302309 remove = true ;
303310 }
@@ -327,6 +334,10 @@ public void _createBlueprints(final T event, final SequenceContext sequenceConte
327334 final Sequence <T > sequence = sequenceBlueprint .create (sequenceContext );
328335
329336 if (sequence .applyObserve (event , sequenceContext )) {
337+
338+ // Check for an updated state first.
339+ sequence .getState ().update (sequence );
340+
330341 if (!sequence .getState ().isSafe ()) {
331342 continue ;
332343 }
0 commit comments