LeaseTracker

mill.exec.Execution.LeaseTracker
class LeaseTracker(indexToTerminal: Array[Task[_]], interGroupDeps: Map[Task[_], Seq[Task[_]]])

Tracks per-task read leases on the workspace lock and releases them once every transitive downstream task that depends on the holder has completed.

The transitive part matters because a direct downstream can forward PathRefs or other data from an upstream output to its own downstreams. Releasing the upstream read lease when only the direct downstream completes would let a concurrent launcher overwrite that output while a later transitive downstream may still read it.

Attributes

Source
Execution.scala
Graph
Supertypes
class Object
trait Matchable
class Any

Members list

Type members

Classlikes

class State(initialPending: Int)

Attributes

Source
Execution.scala
Supertypes
class Object
trait Matchable
class Any

Value members

Concrete methods

def drain(): Unit

Attributes

Source
Execution.scala
def onCompleted(terminal: Task[_]): Unit

Attributes

Source
Execution.scala
def retain(task: Task[_], lease: Lease): Unit

Attributes

Source
Execution.scala

Concrete fields

val states: ConcurrentHashMap[Task[_], State]

Attributes

Source
Execution.scala