From: <th...@us...> - 2010-06-09 18:10:30
|
Revision: 1864 http://azsmrc.svn.sourceforge.net/azsmrc/?rev=1864&view=rev Author: the8472 Date: 2010-06-09 17:00:58 +0000 (Wed, 09 Jun 2010) Log Message: ----------- didn't work, back to 1 session per loop iteration Modified Paths: -------------- mldht/branches/indexer/DHTIndexer.jar mldht/branches/indexer/lbms/plugins/mldht/indexer/TorrentFinder.java Modified: mldht/branches/indexer/DHTIndexer.jar =================================================================== (Binary files differ) Modified: mldht/branches/indexer/lbms/plugins/mldht/indexer/TorrentFinder.java =================================================================== --- mldht/branches/indexer/lbms/plugins/mldht/indexer/TorrentFinder.java 2010-06-09 16:35:38 UTC (rev 1863) +++ mldht/branches/indexer/lbms/plugins/mldht/indexer/TorrentFinder.java 2010-06-09 17:00:58 UTC (rev 1864) @@ -314,62 +314,60 @@ // offload onto the thread pool to avoid blocking the IO threads DHT.getScheduler().submit(new Runnable() { public void run() { - Session session = HibernateUtil.getSessionFactory().openSession(); - try { - // we might get a stale object exception, so loop - while(true) + + // we might get a stale object exception, so loop + while(true) + { + Session session = HibernateUtil.getSessionFactory().openSession(); + Transaction tx = session.beginTransaction(); + try { - Transaction tx = session.beginTransaction(); - try + // handle concurrent deletes + try { + session.load(TorrentDBEntry.class, entry.info_hash); + } catch(ObjectNotFoundException ex) { - // handle concurrent deletes - try { - session.load(TorrentDBEntry.class, entry.info_hash); - } catch(ObjectNotFoundException ex) - { - session.save(entry); - } - - entry.status = newStatus; - - long now = System.currentTimeMillis()/1000; - - entry.lastFetchAttempt = now; - - // we try those with fewer failures first so we have to remember which ones failed - entry.fetchAttemptCount++; - + session.save(entry); + } - if(newStatus == 0) - { - if(entry.hitCount > 10) - entry.hitCount /= 2; - else if(entry.hitCount >= 1) - entry.hitCount--; - } + entry.status = newStatus; - // remove entries that failed too often (hit count gets reduced on failure) - if(entry.hitCount <= 0) - session.delete(entry); - else - session.update(entry); - - - tx.commit(); - log("torrent done for "+entry.info_hash+" | new status "+newStatus); - break; - } catch (HibernateException e) + long now = System.currentTimeMillis()/1000; + + entry.lastFetchAttempt = now; + + // we try those with fewer failures first so we have to remember which ones failed + entry.fetchAttemptCount++; + + + if(newStatus == 0) { - tx.rollback(); - e.printStackTrace(); - } finally { - session.clear(); + if(entry.hitCount > 10) + entry.hitCount /= 2; + else if(entry.hitCount >= 1) + entry.hitCount--; } + + // remove entries that failed too often (hit count gets reduced on failure) + if(entry.hitCount <= 0) + session.delete(entry); + else + session.update(entry); + + + tx.commit(); + log("torrent done for "+entry.info_hash+" | new status "+newStatus); + break; + } catch (HibernateException e) + { + tx.rollback(); + e.printStackTrace(); + } finally { + session.close(); } - } finally { - session.close(); } + } }); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |