You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2005/12/06 00:35:25 UTC
svn commit: r354229 - in /incubator/roller/trunk/src/org/roller: business/
business/hibernate/ model/ presentation/ presentation/weblog/actions/
Author: snoopdave
Date: Mon Dec 5 15:35:12 2005
New Revision: 354229
URL: http://svn.apache.org/viewcvs?rev=354229&view=rev
Log:
Fixing ROL-911, referrer turnover very slow on large systems
Modified:
incubator/roller/trunk/src/org/roller/business/RefererManagerImpl.java
incubator/roller/trunk/src/org/roller/business/hibernate/HibernateRefererManagerImpl.java
incubator/roller/trunk/src/org/roller/model/RefererManager.java
incubator/roller/trunk/src/org/roller/presentation/RollerContext.java
incubator/roller/trunk/src/org/roller/presentation/TurnoverReferersTask.java
incubator/roller/trunk/src/org/roller/presentation/weblog/actions/ReferersAction.java
Modified: incubator/roller/trunk/src/org/roller/business/RefererManagerImpl.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/business/RefererManagerImpl.java?rev=354229&r1=354228&r2=354229&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/business/RefererManagerImpl.java (original)
+++ incubator/roller/trunk/src/org/roller/business/RefererManagerImpl.java Mon Dec 5 15:35:12 2005
@@ -76,13 +76,6 @@
{
}
- //-----------------------------------------------------------------------
- public synchronized void forceTurnover(String websiteId) throws RollerException
- {
- mLogger.debug("forceTurnover");
- checkForTurnover(true, websiteId);
- }
-
//--------------------------------------------------------- Get hit counts
public int getDayHits(WebsiteData website) throws RollerException
Modified: incubator/roller/trunk/src/org/roller/business/hibernate/HibernateRefererManagerImpl.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/business/hibernate/HibernateRefererManagerImpl.java?rev=354229&r1=354228&r2=354229&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/business/hibernate/HibernateRefererManagerImpl.java (original)
+++ incubator/roller/trunk/src/org/roller/business/hibernate/HibernateRefererManagerImpl.java Mon Dec 5 15:35:12 2005
@@ -483,57 +483,45 @@
}
/**
- * Purge referers at midnight. Zero out all dayHits and remove all
- * referers that do not have excerpts.
+ * Clear referrer dayhits and remove referrers without excerpts.
*/
- public void checkForTurnover( boolean forceTurnover, String websiteId )
- throws RollerException {
- // Note, this method doesn't need to be synchronized anymore since
- // it's called from the timer task now, and will never be executed
- // by two threads simultaneously.
+ public void clearReferrers() throws RollerException {
+
if (mLogger.isDebugEnabled()) {
- mLogger.debug("checkForTurnover");
+ mLogger.debug("clearReferrers");
+ }
+ try {
+ Session session = ((HibernateStrategy)mStrategy).getSession();
+ String reset = "update RefererData set dayHits=0";
+ session.createQuery(reset).executeUpdate();
+ String delete = "delete RefererData where excerpt is null";
+ session.createQuery(delete).executeUpdate();
+ } catch (Exception e) {
+ mLogger.error("EXCEPTION resetting referers",e);
}
-
- Date now = new Date();
-
- if (forceTurnover ||
- !mDateFormat.format(now).equals(mDateFormat.format(mRefDate))) {
- try {
- if (websiteId == null) mRefDate = now;
-
- List refs;
- try {
- Session session = ((HibernateStrategy)mStrategy).getSession();
- Criteria criteria = session.createCriteria(RefererData.class);
- criteria.add(Expression.gt("dayHits", new Integer(0)));
- if (websiteId != null) {
- criteria.add(Expression.eq("website.id", websiteId));
- }
- refs = criteria.list();
- } catch (HibernateException e1) {
- throw new RollerException(e1);
- }
-
- Integer zero = new Integer(0);
- for (Iterator rdItr = refs.iterator(); rdItr.hasNext();) {
- RefererData referer = (RefererData) rdItr.next();
-
- if ( (referer.getExcerpt() != null) &&
- (referer.getExcerpt().trim().length() > 0)) {
- // Zero out dayHits of referers with excerpts
- referer.setDayHits(zero);
- storeReferer(referer);
- } else {
- // Throw away referers without excerpts
- removeReferer(referer.getId());
- }
- }
- } catch (RollerException e) {
- mLogger.error("EXCEPTION resetting referers",e);
- }
- }
- }
-
+ }
+ /**
+ * Clear referrer dayhits and remove referrers without excerpts.
+ */
+ public void clearReferrers(WebsiteData website) throws RollerException {
+
+ if (mLogger.isDebugEnabled()) {
+ mLogger.debug("clearReferrers");
+ }
+ try {
+ Session session = ((HibernateStrategy)mStrategy).getSession();
+ String reset = "update RefererData set dayHits=0 where website=:site";
+ session.createQuery(reset)
+ .setParameter("site",website).executeUpdate();
+ String delete = "delete RefererData where website=:site and excerpt is null";
+ session.createQuery(delete)
+ .setParameter("site",website).executeUpdate();
+ } catch (Exception e) {
+ mLogger.error("EXCEPTION resetting referers",e);
+ }
+ }
}
+
+
+
Modified: incubator/roller/trunk/src/org/roller/model/RefererManager.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/model/RefererManager.java?rev=354229&r1=354228&r2=354229&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/model/RefererManager.java (original)
+++ incubator/roller/trunk/src/org/roller/model/RefererManager.java Mon Dec 5 15:35:12 2005
@@ -106,16 +106,15 @@
//---------------------------------------------- Referer tracking turnover
/**
- * Force refer of referer hit counts and deletes all referers that do nto have excerpts.
+ * Clear referrer dayhits and remove referrers without excerpts.
*/
- public void forceTurnover(String websiteId) throws RollerException;
-
+ public void clearReferrers() throws RollerException;
+
/**
- * Check to see if it's time for turnover.
+ * Clear referrer dayhits and remove referrers without excerpts.
*/
- public void checkForTurnover(boolean forceTurnover, String websiteId)
- throws RollerException;
-
+ public void clearReferrers(WebsiteData website) throws RollerException;
+
//----------------------------------------------- Standard manager methods
/**
Modified: incubator/roller/trunk/src/org/roller/presentation/RollerContext.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/RollerContext.java?rev=354229&r1=354228&r2=354229&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/RollerContext.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/RollerContext.java Mon Dec 5 15:35:12 2005
@@ -193,7 +193,6 @@
roller.getThemeManager();
setupSpellChecker();
setupIndexManager(roller);
- setupRefererManager(roller);
initializePingFeatures(roller);
setupPingQueueTask(roller);
setupScheduledTasks(mContext, roller);
@@ -373,30 +372,6 @@
catch (SQLException e)
{
mLogger.warn(e);
- }
- }
-
- //------------------------------------------------------------------------
-
- /**
- * Add TurnoverReferersTask to run on a schedule.
- */
- private void setupRefererManager(Roller roller)
- {
- try
- {
- // Check for turnover when we first start
- final RefererManager refManager = roller.getRefererManager();
- refManager.checkForTurnover(false, null);
-
- // Schedule a check every day, starting at end of today
- //TurnoverReferersTask task = new TurnoverReferersTask();
- //task.init(roller, mContext.getRealPath("/"));
- //roller.getThreadManager().scheduleDailyTimerTask(task);
- }
- catch (RollerException e)
- {
- mLogger.warn("Couldn't schedule referer turnover task", e);
}
}
Modified: incubator/roller/trunk/src/org/roller/presentation/TurnoverReferersTask.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/TurnoverReferersTask.java?rev=354229&r1=354228&r2=354229&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/TurnoverReferersTask.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/TurnoverReferersTask.java Mon Dec 5 15:35:12 2005
@@ -41,7 +41,7 @@
try {
Roller roller = RollerFactory.getRoller();
roller.begin();
- roller.getRefererManager().checkForTurnover(true, null);
+ roller.getRefererManager().clearReferrers();
roller.commit();
roller.release();
mLogger.info("task completed");
Modified: incubator/roller/trunk/src/org/roller/presentation/weblog/actions/ReferersAction.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/weblog/actions/ReferersAction.java?rev=354229&r1=354228&r2=354229&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/weblog/actions/ReferersAction.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/weblog/actions/ReferersAction.java Mon Dec 5 15:35:12 2005
@@ -101,7 +101,7 @@
{
RefererManager refmgr = RollerFactory.getRoller().getRefererManager();
WebsiteData website = rreq.getWebsite();
- refmgr.forceTurnover(website.getId());
+ refmgr.clearReferrers(website);
RollerFactory.getRoller().commit();
CacheManager.invalidate(website);