net.i2p.router.networkdb.kademlia

## Class HarvesterJob

- java.lang.Object
- - net.i2p.router.JobImpl
  - - net.i2p.router.networkdb.kademlia.HarvesterJob

- All Implemented Interfaces:
    Job

       class HarvesterJob
      extends JobImpl

  Simple job to try to keep our peer references up to date by aggressively requerying them every few minutes. This isn't useful for normal operation, but instead helps with gathering operational data on the network - while old RouterInfo refs are sufficient for functionality, newer ones let us harvest the published peer statistics much more frequently. By default this job is disabled (it runs but doesn't do anything), but if the router config option 'netDb.shouldHarvest' is set to 'true', then every minute it'll ask the 5 oldest peers to send their latest info (unless the info is less than 30 minutes old).

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `PROP_ENABLED`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HarvesterJob(RouterContext context, KademliaNetworkDatabaseFacade facade)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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

    - #### PROP_ENABLED

          public static final String PROP_ENABLED

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### HarvesterJob

          public HarvesterJob(RouterContext context,
                      KademliaNetworkDatabaseFacade facade)

  - ### Method Detail

    - #### getName

          public 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.