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);