Avoid ConcurrentModificationException in CloudSim.runClockTick() #191
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes: #187
ConcurrentModificationException can occur when SimEntity changes it's own state during
run()
depending upon implementation in between the Simulation clock ticks. This causes to break the simulator run similar to what happens today in CloudSimExample8. Although, this change fixes the said example it now allows users to write their SimEntity implementation in a way that duringprocessEvent
/run
etc. during the lifecycle of the entity processing it can change it's own state, i.e. change the values of it's linked variables; from a design perspective of the simulator this may/may not be allowed.In case of CloudSimExample8, the GlobalBroker implementation changes it's state during the course of it's run which today causes the exception to occur so alternative pathway is that we might need to fix the Broker implementation.