diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/RepublishLeaseSetJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/RepublishLeaseSetJob.java
index 239fd4772e5cfad9e7d5f8a2cf2e0453775ebc0c..9684effbaa8789506711db04d4ef43458e869ade 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/RepublishLeaseSetJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/RepublishLeaseSetJob.java
@@ -21,11 +21,12 @@ import net.i2p.util.Log;
  *
  */
 public class RepublishLeaseSetJob extends JobImpl {
-    private Log _log;
+    private final Log _log;
     private final static long REPUBLISH_LEASESET_DELAY = 5*60*1000;
-    public final static long REPUBLISH_LEASESET_TIMEOUT = 90*1000;
-    private Hash _dest;
-    private KademliaNetworkDatabaseFacade _facade;
+    public final static long REPUBLISH_LEASESET_TIMEOUT = 60*1000;
+    private final static int RETRY_DELAY = 20*1000;
+    private final Hash _dest;
+    private final KademliaNetworkDatabaseFacade _facade;
     /** this is actually last attempted publish */
     private long _lastPublished;
     
@@ -34,10 +35,11 @@ public class RepublishLeaseSetJob extends JobImpl {
         _log = ctx.logManager().getLog(RepublishLeaseSetJob.class);
         _facade = facade;
         _dest = destHash;
-        _lastPublished = 0;
         //getTiming().setStartAfter(ctx.clock().now()+REPUBLISH_LEASESET_DELAY);
     }
+
     public String getName() { return "Republish a local leaseSet"; }
+
     public void runJob() {
         if (!getContext().clientManager().shouldPublishLeaseSet(_dest))
             return;
@@ -61,10 +63,10 @@ public class RepublishLeaseSetJob extends JobImpl {
                     if (_log.shouldLog(Log.WARN))
                         _log.warn("Client " + _dest + " is local, but we can't find a valid LeaseSet?  perhaps its being rebuilt?");
                 }
-                if (false) { // floodfill doesnt require republishing
-                    long republishDelay = getContext().random().nextLong(2*REPUBLISH_LEASESET_DELAY);
-                    requeue(republishDelay);
-                }
+                //if (false) { // floodfill doesnt require republishing
+                //    long republishDelay = getContext().random().nextLong(2*REPUBLISH_LEASESET_DELAY);
+                //    requeue(republishDelay);
+                //}
                 return;
             } else {
                 if (_log.shouldLog(Log.INFO))
@@ -81,14 +83,16 @@ public class RepublishLeaseSetJob extends JobImpl {
     
     void requeueRepublish() {
         if (_log.shouldLog(Log.WARN))
-            _log.warn("FAILED publishing of the leaseSet for " + _dest.toBase64());
-        requeue(getContext().random().nextInt(60*1000));
+            _log.warn("FAILED publishing of the leaseSet for " + _dest);
+        getContext().jobQueue().removeJob(this);
+        requeue(RETRY_DELAY + getContext().random().nextInt(RETRY_DELAY));
     }
 
     public long lastPublished() {
         return _lastPublished;
     }
 
+    /** TODO - does nothing, remove */
     private static class OnRepublishSuccess extends JobImpl {
         public OnRepublishSuccess(RouterContext ctx) { super(ctx); }
         public String getName() { return "Publish leaseSet successful"; }