net.i2p.router.networkdb.kademlia

## Class RepublishLeaseSetJob

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

- All Implemented Interfaces:
    Job

      public class RepublishLeaseSetJob
      extends JobImpl

  A job that periodically republishes a local LeaseSet to the network database. This job handles the lifecycle of lease set publication including:
  - Initial publication when the router has been running for sufficient uptime
  - Periodic republishing before lease expiration (every 7 minutes)
  - Retry logic with exponential backoff on publication failure
  - Floodfill verification of published lease sets
  - Cleanup of expired/stale lease sets when service stops
  The job manages a retry mechanism that:
  - Retries every 2 seconds on failure
  - Elevates to high priority every 4th attempt
  - Verifies publication via floodfill peers after 3 failures
  - Stops publishing when the client is no longer local
  This class is thread-safe and uses concurrent maps for tracking retry state and logging throttling across multiple instances.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static long` | `REPUBLISH_LEASESET_TIMEOUT`

    - ### Fields inherited from class net.i2p.router.JobImpl

      `_id`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RepublishLeaseSetJob(RouterContext ctx, KademliaNetworkDatabaseFacade facade, Hash destHash)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `(package private) Hash` | `getDestHash()`
    `String` | `getName()` Descriptive name of the task
    `String` | `getTunnelName(Destination d)`
    `long` | `lastPublished()`
    `(package private) void` | `requeueRepublish()`
    `void` | `runJob()` Actually perform the task.

    - ### Methods inherited from class net.i2p.router.JobImpl

      `dropped, 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

    - #### REPUBLISH_LEASESET_TIMEOUT

          public static final long REPUBLISH_LEASESET_TIMEOUT

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### RepublishLeaseSetJob

          public RepublishLeaseSetJob(RouterContext ctx,
                                      KademliaNetworkDatabaseFacade facade,
                                      Hash destHash)

  - ### Method Detail

    - #### getDestHash

          Hash getDestHash()

    - #### getName

          public String getName()

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

    - #### getTunnelName

          public String getTunnelName(Destination d)

    - #### lastPublished

          public long lastPublished()

    - #### requeueRepublish

          void requeueRepublish()

    - #### runJob

          public void runJob()

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