From 13e0da66541a8ff94a52403095738dd5e54a0dda Mon Sep 17 00:00:00 2001 From: Vicky Bung Date: Tue, 9 May 2023 10:48:49 +0200 Subject: [PATCH 1/4] Changed implementation of actor naming for unique name generation --- CHANGELOG.md | 1 + .../scala/edu/ie3/simona/actor/SimonaActorNaming.scala | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cafa9fff6c..61fed7cda9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,6 +64,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Speeding up additionalActivationTicks in participant's BaseStateData [#421](https://github.com/ie3-institute/simona/pull/421) - Changed format of example grid `vn_simona` [#216](https://github.com/ie3-institute/simona/issues/216) - Renamed ChpData to ChpRelevantData [#494](https://github.com/ie3-institute/simona/issues/494) +- Changed implementation of actor naming for unique name generation [#103](https://github.com/ie3-institute/simona/issues/103) ### Fixed - Location of `vn_simona` test grid (was partially in Berlin and Dortmund) [#72](https://github.com/ie3-institute/simona/issues/72) diff --git a/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala b/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala index acf4d2d0a0..6a0d828e52 100644 --- a/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala +++ b/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala @@ -29,8 +29,12 @@ object SimonaActorNaming { * @return * a shortened uuid string */ - private def simonaActorUuid: String = - UUID.randomUUID().toString.substring(0, 5) + private def simonaActorUuid: String = { + val uuid = UUID.randomUUID().toString.substring(0, 5) + val timestamp = System.currentTimeMillis() + val finalUuid = s"$uuid-$timestamp" + finalUuid.substring(0, 13) + } /** Constructs an actor name based on the simona convention for actor names. * The provided combination of class and id has to be unique for the whole From bc9355fd2ee9f36048a6eea2d23b4bc0c757bd4a Mon Sep 17 00:00:00 2001 From: Vicky Bung Date: Tue, 9 May 2023 10:53:22 +0200 Subject: [PATCH 2/4] Changed implementation of actor naming for unique name generation --- src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala b/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala index 6a0d828e52..6070cd6510 100644 --- a/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala +++ b/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala @@ -31,9 +31,9 @@ object SimonaActorNaming { */ private def simonaActorUuid: String = { val uuid = UUID.randomUUID().toString.substring(0, 5) - val timestamp = System.currentTimeMillis() + val timestamp = System.nanoTime() val finalUuid = s"$uuid-$timestamp" - finalUuid.substring(0, 13) + finalUuid.substring(0, 15) } /** Constructs an actor name based on the simona convention for actor names. From e2236b4f25700908f3afc9f41c896fe821a05c03 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Mon, 3 Jun 2024 22:53:48 +0200 Subject: [PATCH 3/4] change actor naming to actorId plus random number --- .../ie3/simona/actor/SimonaActorNaming.scala | 24 ++++++++----------- .../agent/grid/GridAgentController.scala | 3 ++- .../sim/setup/SimonaStandaloneSetup.scala | 6 +++-- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala b/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala index 7e29146003..ce2669b300 100644 --- a/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala +++ b/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala @@ -10,7 +10,7 @@ import org.apache.pekko.actor.typed.ActorRef import org.apache.pekko.actor.typed.scaladsl.adapter.TypedActorRefOps import org.apache.pekko.actor.{ActorRefFactory, Props, ActorRef => ClassicRef} -import java.util.UUID +import scala.util.Random object SimonaActorNaming { @@ -18,24 +18,20 @@ object SimonaActorNaming { extends AnyVal { def simonaActorOf(props: Props, actorId: String): ClassicRef = - refFactory.actorOf(props, actorName(props, actorId)) - - def simonaActorOf(props: Props): ClassicRef = - refFactory.actorOf(props, actorName(props, simonaActorUuid)) + refFactory.actorOf(props, actorName(props, simonaActorId(actorId))) } - /** Constructs a uuid and cuts it down to 6 digits for convenience. Although - * this is dangerous as duplicates might be possible, it should be sufficient - * in our case as the uniqueness is only required in one actor system + /** Constructs an Id for convenience actor naming. Although this is dangerous + * as duplicates might be possible, it should be sufficient in our case as + * the uniqueness is only required in one actor system * * @return - * a shortened uuid string + * an Id string */ - private def simonaActorUuid: String = { - val uuid = UUID.randomUUID().toString.substring(0, 5) - val timestamp = System.nanoTime() - val finalUuid = s"$uuid-$timestamp" - finalUuid.substring(0, 15) + private def simonaActorId(actorId: String): String = { + val randomNumber = Random.nextInt(1000).toString + val finalId = s"$actorId-$randomNumber" + finalId } /** Constructs an actor name based on the simona convention for actor names. diff --git a/src/main/scala/edu/ie3/simona/agent/grid/GridAgentController.scala b/src/main/scala/edu/ie3/simona/agent/grid/GridAgentController.scala index 7ba4abef77..33482204f6 100644 --- a/src/main/scala/edu/ie3/simona/agent/grid/GridAgentController.scala +++ b/src/main/scala/edu/ie3/simona/agent/grid/GridAgentController.scala @@ -652,7 +652,8 @@ class GridAgentController( maybeControllingEm, ), listener.map(_.toClassic), - ) + ), + evcsInput.getId, ) .toTyped diff --git a/src/main/scala/edu/ie3/simona/sim/setup/SimonaStandaloneSetup.scala b/src/main/scala/edu/ie3/simona/sim/setup/SimonaStandaloneSetup.scala index 1f0d894316..951e4cd714 100644 --- a/src/main/scala/edu/ie3/simona/sim/setup/SimonaStandaloneSetup.scala +++ b/src/main/scala/edu/ie3/simona/sim/setup/SimonaStandaloneSetup.scala @@ -158,7 +158,8 @@ class SimonaStandaloneSetup( simulationStart, ), simulationStart, - ) + ), + "primaryServiceProxyAgent", ) scheduler ! ScheduleActivation(primaryServiceProxy.toTyped, INIT_SIM_TICK) @@ -176,7 +177,8 @@ class SimonaStandaloneSetup( .toZonedDateTime(simonaConfig.simona.time.startDateTime), TimeUtil.withDefaults .toZonedDateTime(simonaConfig.simona.time.endDateTime), - ) + ), + "weatherAgent", ) weatherService ! SimonaService.Create( InitWeatherServiceStateData( From 5a516815f1a7f6e63e6ef87582dd6892b9c23166 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Tue, 13 Aug 2024 18:04:07 +0200 Subject: [PATCH 4/4] remove code smell --- src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala b/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala index ce2669b300..fed8f600f3 100644 --- a/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala +++ b/src/main/scala/edu/ie3/simona/actor/SimonaActorNaming.scala @@ -30,8 +30,7 @@ object SimonaActorNaming { */ private def simonaActorId(actorId: String): String = { val randomNumber = Random.nextInt(1000).toString - val finalId = s"$actorId-$randomNumber" - finalId + s"$actorId-$randomNumber" } /** Constructs an actor name based on the simona convention for actor names.