diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2020-04-15 00:17:18 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2020-04-15 00:17:18 +0200 |
| commit | 998466e611438e9f4381e5d693ef4119a3cf8905 (patch) | |
| tree | 1d0234ae2e6e8f692553752063793498aa021380 /opendc | |
| parent | 60372f0022d423efd5267ef4008d9afcbe870911 (diff) | |
bug: Address uid collision issue
Diffstat (limited to 'opendc')
2 files changed, 7 insertions, 4 deletions
diff --git a/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt b/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt index 844938db..08f04760 100644 --- a/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt +++ b/opendc/opendc-compute/src/main/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriver.kt @@ -120,7 +120,7 @@ public class SimpleBareMetalDriver( /** * The internal random instance. */ - private val random = Random(0) + private val random = Random(uid.leastSignificantBits xor uid.mostSignificantBits) override suspend fun init(): Node = withContext(domain.coroutineContext) { nodeState.value @@ -134,7 +134,7 @@ public class SimpleBareMetalDriver( val events = EventFlow<ServerEvent>() val server = Server( - UUID(node.uid.leastSignificantBits xor node.uid.mostSignificantBits, random.nextLong()), + UUID(random.nextLong(), random.nextLong()), node.name, emptyMap(), flavor, @@ -151,7 +151,7 @@ public class SimpleBareMetalDriver( override suspend fun stop(): Node = withContext(domain.coroutineContext) { val node = nodeState.value - if (node.state == NodeState.SHUTOFF || node.state == NodeState.ERROR) { + if (node.state == NodeState.SHUTOFF) { return@withContext node } diff --git a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20ClusterEnvironmentReader.kt b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20ClusterEnvironmentReader.kt index 89a59e1c..2ef0db97 100644 --- a/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20ClusterEnvironmentReader.kt +++ b/opendc/opendc-format/src/main/kotlin/com/atlarge/opendc/format/environment/sc20/Sc20ClusterEnvironmentReader.kt @@ -41,6 +41,7 @@ import com.atlarge.opendc.format.environment.EnvironmentReader import java.io.BufferedReader import java.io.File import java.io.FileReader +import java.util.Random import java.util.UUID /** @@ -67,6 +68,7 @@ class Sc20ClusterEnvironmentReader( var coresPerHost: Int val nodes = mutableListOf<SimpleBareMetalDriver>() + val random = Random(0) BufferedReader(FileReader(environmentFile)).use { reader -> reader.lineSequence() @@ -87,6 +89,7 @@ class Sc20ClusterEnvironmentReader( return@forEachIndexed } + clusterIdx++ clusterId = values[clusterIdCol].trim() speed = values[speedCol].trim().toDouble() * 1000.0 numberOfHosts = values[numberOfHostsCol].trim().toInt() @@ -100,7 +103,7 @@ class Sc20ClusterEnvironmentReader( nodes.add( SimpleBareMetalDriver( dom.newDomain("node-$clusterId-$it"), - UUID((clusterIdx++).toLong(), it.toLong()), + UUID(random.nextLong(), random.nextLong()), "node-$clusterId-$it", mapOf(NODE_CLUSTER to clusterId), List(coresPerHost) { coreId -> |
