public void updateCount ( String lastPrefix , int diff ) { String statNode = Quotas . statPath ( lastPrefix ) ; DataNode node = nodes . get ( statNode ) ; StatsTrack updatedStat = null ; if ( node == null ) { // should not happen LOG . error ( "Missing count node for stat " + statNode ) ; return ; } synchronized ( node ) { updatedStat = new StatsTrack ( new String ( node . data ) ) ; updatedStat . setCount ( updatedStat . getCount ( ) + diff ) ; node . data = updatedStat . toString ( ) . getBytes ( ) ; } // now check if the counts match the quota String quotaNode = Quotas . quotaPath ( lastPrefix ) ; node = nodes . get ( quotaNode ) ; StatsTrack thisStats = null ; if ( node == null ) { // should not happen LOG . error ( "Missing count node for quota " + quotaNode ) ; return ; } synchronized ( node ) { thisStats = new StatsTrack ( new String ( node . data ) ) ; } if ( thisStats . getCount ( ) < updatedStat . getCount ( ) ) { LOG . warn ( "Quota exceeded: " + lastPrefix + " count=" + updatedStat . getCount ( ) + " limit=" + thisStats . getCount ( ) ) ; } }
update the count of this stat datanode