File tree Expand file tree Collapse file tree 1 file changed +6
-8
lines changed
entities/src/main/scala/com/devsisters/shardcake/internal Expand file tree Collapse file tree 1 file changed +6
-8
lines changed Original file line number Diff line number Diff line change @@ -61,14 +61,12 @@ private[shardcake] object EntityManager {
61
61
val maxIdleTime = entityMaxIdleTime getOrElse config.entityMaxIdleTime
62
62
63
63
def sleep (duration : Duration ): UIO [Unit ] =
64
- for {
65
- _ <- Clock .sleep(duration)
66
- cdt <- currentTimeInMilliseconds
67
- map <- entitiesLastReceivedAt.get
68
- lastReceivedAt = map.getOrElse(entityId, 0L )
69
- remaining = maxIdleTime minus Duration .fromMillis(cdt - lastReceivedAt)
70
- _ <- sleep(remaining).when(remaining > Duration .Zero )
71
- } yield ()
64
+ (Clock .sleep(duration) *> currentTimeInMilliseconds <*> entitiesLastReceivedAt.get).flatMap { case (cdt, map) =>
65
+ val lastReceivedAt = map.getOrElse(entityId, 0L )
66
+ val remaining = maxIdleTime minus Duration .fromMillis(cdt - lastReceivedAt)
67
+ // do not use ZIO.when to prevent zio stack memory leak
68
+ if (remaining > Duration .Zero ) sleep(remaining) else ZIO .unit
69
+ }
72
70
73
71
(for {
74
72
_ <- sleep(maxIdleTime)
You can’t perform that action at this time.
0 commit comments