Skip to content

Commit 62ed335

Browse files
committed
copy dependency stack when nesting simulation to prevent concurrency issues
1 parent 8ed05b0 commit 62ed335

File tree

5 files changed

+12
-8
lines changed

5 files changed

+12
-8
lines changed

src/main/kotlin/com/lambda/context/AutomationConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ object AutomationConfig : Configurable(LambdaConfig), Automated {
6262
val showAllEntries by setting("Show All Entries", false, "Show all entries in the task tree").group(Group.Debug)
6363
val shrinkFactor by setting("Shrink Factor", 0.001, 0.0..1.0, 0.001).group(Group.Debug)
6464
val ignoreItemDropWarnings by setting("Ignore Drop Warnings", false, "Hides the item drop warnings from the break manager").group(Group.Debug)
65-
val maxSimDependencies by setting("Max Sim Dependencies", 10, 0..25, 1, "Maximum dependency build results").group(Group.Debug)
65+
val maxSimDependencies by setting("Max Sim Dependencies", 3, 0..10, 1, "Maximum dependency build results").group(Group.Debug)
6666

6767
@Volatile
6868
var drawables = listOf<Drawable>()

src/main/kotlin/com/lambda/interaction/construction/simulation/ISimInfo.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ interface ISimInfo : Automated {
4747
targetState: TargetState,
4848
pov: Vec3d,
4949
concurrentResults: MutableSet<BuildResult>,
50-
simBuilder: suspend ISimInfo.() -> Unit
50+
simBuilder: suspend SimInfo.() -> Unit
5151
) {
5252
SimInfo(
5353
pos, state, targetState,
@@ -63,12 +63,12 @@ interface ISimInfo : Automated {
6363
state: BlockState = this.state,
6464
targetState: TargetState = this.targetState,
6565
pov: Vec3d = this.pov,
66-
simBuilder: suspend ISimInfo.() -> Unit
66+
simBuilder: suspend SimInfo.() -> Unit
6767
) {
6868
SimInfo(
6969
pos, state, targetState,
7070
targetState.getProcessingInfo(pos) ?: return,
71-
pov, dependencyStack, concurrentResults, this
71+
pov, Stack<Sim<*>>().apply { addAll(dependencyStack) }, concurrentResults, this
7272
).takeIf { it.hasBasicRequirements() }?.run { simBuilder() }
7373
}
7474
}

src/main/kotlin/com/lambda/interaction/construction/simulation/checks/BreakSim.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import com.lambda.interaction.construction.simulation.ISimInfo
2626
import com.lambda.interaction.construction.simulation.ISimInfo.Companion.sim
2727
import com.lambda.interaction.construction.simulation.Sim
2828
import com.lambda.interaction.construction.simulation.SimDsl
29+
import com.lambda.interaction.construction.simulation.SimInfo
2930
import com.lambda.interaction.construction.simulation.checks.PlaceSim.Companion.simPlacement
3031
import com.lambda.interaction.construction.verify.TargetState
3132
import com.lambda.interaction.material.ContainerSelection.Companion.selectContainer
@@ -74,7 +75,7 @@ class BreakSim private constructor(simInfo: ISimInfo)
7475
companion object {
7576
@SimDsl
7677
context(automatedSafeContext: AutomatedSafeContext, dependent: Sim<*>)
77-
suspend fun ISimInfo.simBreak() =
78+
suspend fun SimInfo.simBreak() =
7879
BreakSim(this).run {
7980
withDependent(dependent) {
8081
automatedSafeContext.simBreaks()

src/main/kotlin/com/lambda/interaction/construction/simulation/checks/PlaceSim.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import com.lambda.interaction.construction.simulation.ISimInfo
2626
import com.lambda.interaction.construction.simulation.ISimInfo.Companion.sim
2727
import com.lambda.interaction.construction.simulation.Sim
2828
import com.lambda.interaction.construction.simulation.SimDsl
29+
import com.lambda.interaction.construction.simulation.SimInfo
2930
import com.lambda.interaction.construction.simulation.checks.BreakSim.Companion.simBreak
3031
import com.lambda.interaction.construction.simulation.checks.PlaceSim.RotatePlaceTest.Companion.rotatePlaceTest
3132
import com.lambda.interaction.construction.verify.TargetState
@@ -77,7 +78,7 @@ class PlaceSim private constructor(simInfo: ISimInfo)
7778
companion object {
7879
context(automatedSafeContext: AutomatedSafeContext, dependent: Sim<*>)
7980
@SimDsl
80-
suspend fun ISimInfo.simPlacement() =
81+
suspend fun SimInfo.simPlacement() =
8182
PlaceSim(this).run {
8283
withDependent(dependent) {
8384
automatedSafeContext.simPlacements()

src/main/kotlin/com/lambda/interaction/construction/simulation/checks/PostProcessingSim.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ import com.lambda.interaction.construction.result.BuildResult
2323
import com.lambda.interaction.construction.result.results.GenericResult
2424
import com.lambda.interaction.construction.result.results.InteractResult
2525
import com.lambda.interaction.construction.simulation.ISimInfo
26+
import com.lambda.interaction.construction.simulation.ISimInfo.Companion.sim
2627
import com.lambda.interaction.construction.simulation.Sim
2728
import com.lambda.interaction.construction.simulation.SimDsl
29+
import com.lambda.interaction.construction.simulation.SimInfo
2830
import com.lambda.interaction.construction.simulation.checks.PlaceSim.Companion.simPlacement
2931
import com.lambda.interaction.construction.verify.TargetState
3032
import com.lambda.interaction.material.ContainerSelection.Companion.selectContainer
@@ -52,7 +54,7 @@ class PostProcessingSim private constructor(simInfo: ISimInfo)
5254
companion object {
5355
context(automatedSafeContext: AutomatedSafeContext, dependent: Sim<*>)
5456
@SimDsl
55-
suspend fun ISimInfo.simPostProcessing() =
57+
suspend fun SimInfo.simPostProcessing() =
5658
PostProcessingSim(this).run {
5759
withDependent(dependent) {
5860
automatedSafeContext.simPostProcessing()
@@ -96,7 +98,7 @@ class PostProcessingSim private constructor(simInfo: ISimInfo)
9698
simInteraction(expectedState)
9799
}
98100

99-
Properties.SLAB_TYPE -> simPlacement()
101+
Properties.SLAB_TYPE -> sim { simPlacement() }
100102
}
101103
}
102104
}

0 commit comments

Comments
 (0)