play-iteratees
play-iteratees copied to clipboard
Thread-safety of vars in iteratee module
From https://github.com/playframework/playframework/issues/1076:
In the iteratees module we use vars in the iteratees package in what looks like a non-thread-safe way. We need to review each occurrence and possibly update it to be thread-safe, e.g. mark @volatile.
$ grep -n var *
Concurrent.scala:555: var closeFlag = false
Concurrent.scala:697: var isClosed: Boolean = false
Enumerator.scala:62: * A variation on `apply` or `|>>` which returns the state of the iteratee rather
Enumerator.scala:361: var iteratee: Iteratee[E, A] = it
Enumerator.scala:362: var promise: scala.concurrent.Promise[Iteratee[E, A]] = Promise[Iteratee[E, A]]()
Enumerator.scala:546: var iterateeP = Promise[Iteratee[E, A]]()
Enumerator.scala:586: var iterateeP = Promise[Iteratee[E, A]]()
Enumerator.scala:761: var iteratee: Iteratee[E, _] = _
Enumerator.scala:762: var promise: Promise[Iteratee[E, _]] = _