## net.i2p.router.networkdb.kademlia
Class ExpireRoutersJob

    java.lang.Object
      net.i2p.router.JobImpl
          net.i2p.router.networkdb.kademlia.ExpireRoutersJob

All Implemented Interfaces:
  Job

class ExpireRoutersJob
extends JobImpl

Go through the routing table pick routers that are performing poorly or is out of date, but don't expire routers we're actively tunneling through. If a peer is performing worse than some threshold (via profile.rankLiveliness) drop it and don't ask any questions. If a peer isn't ranked really poorly, but we just haven't heard from it in a while, drop it and add it to the set of keys we want the netDb to explore.

Field Summary
`static long` `EXPIRE_DELAY` If a routerInfo structure isn't updated within an hour, drop it and search for a later version.

Constructor Summary
`ExpireRoutersJob(RouterContext ctx, KademliaNetworkDatabaseFacade facade)`

Method Summary
`java.lang.String` `getName()` Descriptive name of the task
`void` `runJob()` Actually perform the task.

Methods inherited from class net.i2p.router.JobImpl
`dropped, getAddedBy, getContext, getJobId, getMadeReadyOn, getTiming, madeReady, requeue, toString`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### EXPIRE_DELAY

    public static final long EXPIRE_DELAY

  If a routerInfo structure isn't updated within an hour, drop it and search for a later version. This value should be large enough to deal with the Router.CLOCK_FUDGE_FACTOR.

  See Also:
    Constant Field Values

Constructor Detail

### ExpireRoutersJob

    public ExpireRoutersJob(RouterContext ctx,
                            KademliaNetworkDatabaseFacade facade)

Method Detail

### getName

    public java.lang.String getName()

  Description copied from interface: `Job`
  Descriptive name of the task

### runJob

    public void runJob()

  Description copied from interface: `Job`
  Actually perform the task. This call blocks until the Job is complete.