diff --git a/router/java/src/net/i2p/router/ProfileManager.java b/router/java/src/net/i2p/router/ProfileManager.java
index f829bdaeb4fbc20ad811e219fe327b2dedd4ce96..f861ab186192efea271220595f8d66e6e5d2ac46 100644
--- a/router/java/src/net/i2p/router/ProfileManager.java
+++ b/router/java/src/net/i2p/router/ProfileManager.java
@@ -155,6 +155,7 @@ public interface ProfileManager {
      * through an explicit dbStore or in a dbLookupReply
      */
     void heardAbout(Hash peer);
+    void heardAbout(Hash peer, long when);
     
     /**
      * Note that the router received a message from the given peer on the specified
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java
index 16aa7dfb656cab5872f515a2d4f4deb2a4f24b34..abc78b855419c2be0308aad11d97015c1628783e 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java
@@ -411,6 +411,10 @@ class PersistentDataStore extends TransientDataStore {
                         try {
                             // persist = false so we don't write what we just read
                             _facade.store(ri.getIdentity().getHash(), ri, false);
+                            // when heardAbout() was removed from TransientDataStore, it broke
+                            // profile bootstrapping for new routers,
+                            // so add it here.
+                            getContext().profileManager().heardAbout(ri.getIdentity().getHash(), ri.getPublished());
                         } catch (IllegalArgumentException iae) {
                             _log.info("Refused locally loaded routerInfo - deleting");
                             corrupt = true;
diff --git a/router/java/src/net/i2p/router/peermanager/ProfileManagerImpl.java b/router/java/src/net/i2p/router/peermanager/ProfileManagerImpl.java
index 69088caaa7214d25be856e93e9113f6070c2b4a5..712a3cba65b643c4bcf71537c6ce69c98bf857a7 100644
--- a/router/java/src/net/i2p/router/peermanager/ProfileManagerImpl.java
+++ b/router/java/src/net/i2p/router/peermanager/ProfileManagerImpl.java
@@ -311,6 +311,17 @@ public class ProfileManagerImpl implements ProfileManager {
         if (data == null) return;
         data.setLastHeardAbout(_context.clock().now());
     }
+
+    /**
+     * Note that the local router received a reference to the given peer
+     * at a certain time. Only update the time if newer.
+     */
+    public void heardAbout(Hash peer, long when) {
+        PeerProfile data = getProfile(peer);
+        if (data == null) return;
+        if (when > data.getLastHeardAbout())
+            data.setLastHeardAbout(when);
+    }
     
     /**
      * Note that the router received a message from the given peer on the specified