play-iteratees icon indicating copy to clipboard operation
play-iteratees copied to clipboard

Thread-safety of vars in iteratee module

Open wsargent opened this issue 9 years ago • 0 comments

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, _]] = _

wsargent avatar Mar 26 '16 17:03 wsargent