From: <sc...@hy...> - 2009-04-27 21:10:09
|
Author: scottmf Date: 2009-04-27 14:10:01 -0700 (Mon, 27 Apr 2009) New Revision: 13076 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=13076 Modified: trunk/src/org/hyperic/hq/measurement/server/mbean/AvailabilityCheckService.java Log: added notes about the synchronization in the backfiller Modified: trunk/src/org/hyperic/hq/measurement/server/mbean/AvailabilityCheckService.java =================================================================== --- trunk/src/org/hyperic/hq/measurement/server/mbean/AvailabilityCheckService.java 2009-04-27 20:50:30 UTC (rev 13075) +++ trunk/src/org/hyperic/hq/measurement/server/mbean/AvailabilityCheckService.java 2009-04-27 21:10:01 UTC (rev 13076) @@ -113,6 +113,10 @@ return TimingVoodoo.roundDownTime(begin, measInterval); } + /** + * Since this method is called from the synchronized block in hitInSession() + * please see the associated NOTE. + */ private Collection getDownPlatforms(Date lDate) { final boolean debug = _log.isDebugEnabled(); AvailabilityCache cache = AvailabilityCache.getInstance(); @@ -196,6 +200,13 @@ } } try { + // PLEASE NOTE: This synchronized block directly affects the + // throughput of the availability metrics, while this lock is + // active no availability metric will be inserted. This is to + // ensure the backfilled points will not be inserted after the + // associated AVAIL_UP value from the agent. + // The code must be extremely efficient or else it will have + // a big impact on the performance of availability insertion. synchronized (cache) { Collection downPlatforms = getDownPlatforms(lDate); List backfillList = getBackfillPts(downPlatforms, current); @@ -208,6 +219,10 @@ } } + /** + * Since this method is called from the synchronized block in hitInSession() + * please see the associated NOTE. + */ private void backfillAvails(List backfillList) { final boolean debug = _log.isDebugEnabled(); final AvailabilityManagerLocal availMan = |