object
Sweeper
Value Members
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: Any): Boolean
-
-
final
def
asInstanceOf[T0]: T0
-
-
def
clone(): AnyRef
-
final
def
eq(arg0: AnyRef): Boolean
-
def
equals(arg0: Any): Boolean
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
final
def
isInstanceOf[T0]: Boolean
-
val
log: Logger
-
final
def
ne(arg0: AnyRef): Boolean
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
def
process(cfg: NelsonConfig)(implicit unclaimedResourceTracker: Kleisli[IO, (Datacenter, Int), Unit]): Stream[IO, Unit]
-
def
sweeperSink(implicit unclaimedResourceTracker: Kleisli[IO, (Datacenter, Int), Unit]): Sink[IO, SweeperHelmOp]
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
val
timer: ~>[IO, IO]
-
def
toString(): String
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
Inherited from AnyRef
Inherited from Any
Infrequently running cleanup of "leaked" data or data which is otherwise unaccounted for. Unlike the cleanup process (which is optimized for precision and efficiency), the Sweeper is optimized for comprehensiveness over time via repeated execution (even if we miss some "garbage" on execution i, we will eventually clean it up on excution i + N). We only need to ensure that we 1.) cleanup data that was missed during the Cleanup operation and 2.) ensure we aren't progressively leaking resources over the long-term.
Items that are identified as an "UnclaimedResource" (items that have no obvious owner -- which may or may not be garbage) are NOT deleted but will be tracked and counted by the end of the task. The number of Unclaimed Resources will be recorded as a histogram, to allow us to have visibility of accumulation on such items. In the event that we discover that the amount of Unclaimed Resources is increasing over time this is a possible indication that we have a major leakage signaling the need to modify the sweeper to be more aggressive.