Changeset 18
- Timestamp:
- 10/20/05 19:53:37 (5 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
feedtree/trunk/src/net/feedtree/proxyapp/FeedInfo.java
r17 r18 235 235 protected Date m_lastTaskDate; 236 236 protected EventLog m_eventLog; 237 protected Date m_lastAccess = new Date(); 237 238 238 239 protected static String uriToTitle(String uri) { … … 356 357 m_eventLog.add(e); 357 358 } 359 360 public void touch() { m_lastAccess = new Date(); } 361 public Date getLastAccess() { return m_lastAccess; } 358 362 359 363 public SyndFeed getSyndFeed() { return m_syndFeedTemplate; } feedtree/trunk/src/net/feedtree/proxyapp/WebProxyClient.java
r17 r18 55 55 static float UNDERLOAD_UNSUB_PROB = 0.25f; 56 56 static int DEFAULT_OVERLOAD_FACTOR = 3; 57 58 static long DEFAULT_STALE_FEED_AGE = 7 * DAYS; 57 59 58 60 static String FEEDTREE_CLIENT_FEED_TYPE = "atom_0.3"; … … 79 81 protected Date m_startDate; 80 82 protected SystemStats m_systemStats = new SystemStats(); 83 protected AbandonedFeedReaper m_feedReaper = new AbandonedFeedReaper(); 81 84 82 85 // ----------------------------------------------------------------- 86 87 protected class AbandonedFeedReaper { 88 protected Timer m_scheduler = new Timer(); 89 protected final long k_refresh = 60 * MINUTES; 90 91 public AbandonedFeedReaper() { 92 m_scheduler.scheduleAtFixedRate(new TimerTask() { 93 public void run() { 94 long now = new Date().getTime(); 95 Map feedMap = getFeeds(); 96 Object[] feeds; 97 synchronized(feedMap) { 98 feeds = feedMap.values().toArray(); 99 } 100 for(int numFeeds=0; numFeeds<feeds.length; numFeeds++) { 101 FeedInfo feed = (FeedInfo)(feeds[numFeeds]); 102 Date lastAccess = feed.getLastAccess(); 103 if ((now - lastAccess.getTime()) 104 > DEFAULT_STALE_FEED_AGE) 105 { 106 String url = feed.getUri(); 107 Logger.global.info("Unsubscribing from feed (last access: " + lastAccess + "): " + url); 108 unsubscribeFeed(url); 109 } 110 } 111 } 112 }, 0, k_refresh); 113 } 114 } 83 115 84 116 protected class SystemStats { … … 334 366 if (feed != null) { 335 367 Logger.global.fine("[proxy] generating response from feed cache"); 336 // XXX: copy/paste 368 369 feed.touch(); // update the last access time 370 337 371 SyndFeed generatedFeed = feed.generateSyndFeed(WebProxyClient.FEED_SIZE, m_appendEntryInfo); 338 372
