2 new revisions:

Revision: f5ecf2b2e9ea
Author:   Alexandre Mendonça <ammendonca>
Date:     Wed Jan  9 20:01:28 2013
Log:      Small improvement to getPeerTable()
http://code.google.com/p/jdiameter/source/detail?r=f5ecf2b2e9ea

Revision: abe58aff2b03
Author:   Alexandre Mendonça <ammendonca>
Date:     Wed Jan  9 20:02:25 2013
Log:      Diameter Stack: Limit/Clean Peer Table...
http://code.google.com/p/jdiameter/source/detail?r=abe58aff2b03

==============================================================================
Revision: f5ecf2b2e9ea
Author:   Alexandre Mendonça <ammendonca>
Date:     Wed Jan  9 20:01:28 2013
Log:      Small improvement to getPeerTable()

http://code.google.com/p/jdiameter/source/detail?r=f5ecf2b2e9ea

Modified:
/core/jdiameter/impl/src/main/java/org/jdiameter/client/impl/controller/PeerTableImpl.java

=======================================
--- /core/jdiameter/impl/src/main/java/org/jdiameter/client/impl/controller/PeerTableImpl.java Wed Mar 21 19:53:59 2012 +++ /core/jdiameter/impl/src/main/java/org/jdiameter/client/impl/controller/PeerTableImpl.java Wed Jan 9 20:01:28 2013
@@ -148,9 +148,7 @@
   }

   public List<Peer> getPeerTable() {
-    List<Peer> p = new ArrayList<Peer>();
-    p.addAll(peerTable.values());
-    return p;
+    return new ArrayList<Peer>(peerTable.values());
   }

public void sendMessage(IMessage message) throws IllegalDiameterStateException, RouteException, AvpDataException, IOException {

==============================================================================
Revision: abe58aff2b03
Author:   Alexandre Mendonça <ammendonca>
Date:     Wed Jan  9 20:02:25 2013
Log:      Diameter Stack: Limit/Clean Peer Table

Update Issue 3
Status: Fixed
Implemented option 1, with hardcoded size of 10000 peers.

http://code.google.com/p/jdiameter/source/detail?r=abe58aff2b03

Modified:
/core/jdiameter/impl/src/main/java/org/jdiameter/server/impl/MutablePeerTableImpl.java

=======================================
--- /core/jdiameter/impl/src/main/java/org/jdiameter/server/impl/MutablePeerTableImpl.java Fri Nov 23 19:47:47 2012 +++ /core/jdiameter/impl/src/main/java/org/jdiameter/server/impl/MutablePeerTableImpl.java Wed Jan 9 20:02:25 2013
@@ -63,6 +63,7 @@
 import org.jdiameter.api.MutablePeerTable;
 import org.jdiameter.api.Network;
 import org.jdiameter.api.Peer;
+import org.jdiameter.api.PeerState;
 import org.jdiameter.api.PeerTableListener;
 import org.jdiameter.api.Realm;
 import org.jdiameter.api.Statistic;
@@ -103,6 +104,7 @@
private static final Logger logger = LoggerFactory.getLogger(MutablePeerTableImpl.class);

   private static final int CONN_INVALIDATE_PERIOD = 60000;
+  private static final int MAX_PEER_TABLE_SIZE = 10000;

   protected Configuration config;
   protected ISessionFactory sessionFactory;
@@ -518,6 +520,18 @@
   }

   private void appendPeerToPeerTable(IPeer peer) {
+ logger.debug("Adding Peer[{}] to PeerTable with size {}", peer, peerTable.size());
+
+    // Cleaning up if we are at max capacity...
+    if(peerTable.size() == MAX_PEER_TABLE_SIZE) {
+      for(String k : peerTable.keySet()) {
+        Peer p = peerTable.get(k);
+        if(p != null && p.getState(PeerState.class) == PeerState.DOWN) {
+          peerTable.remove(k, p);
+        }
+      }
+    }
+
     peerTable.put(peer.getUri().getFQDN(), peer);
     if (peerTableListener != null) {
       peerTableListener.peerAccepted(peer);

Reply via email to