/** * @return true if there is no quota information associated to this object */ public synchronized boolean isBypass() { return globalLimiter == NoopQuotaLimiter.get(); }
/** * Perform an update of the quota info based on the other quota info object. * (This operation is executed by the QuotaCache) */ public synchronized void update(final QuotaState other) { if (globalLimiter == NoopQuotaLimiter.get()) { globalLimiter = other.globalLimiter; } else if (other.globalLimiter == NoopQuotaLimiter.get()) { globalLimiter = NoopQuotaLimiter.get(); } else { globalLimiter = QuotaLimiterFactory.update(globalLimiter, other.globalLimiter); } lastUpdate = other.lastUpdate; }
/** * @return true if there is no quota information associated to this object */ @Override public synchronized boolean isBypass() { return !bypassGlobals && getGlobalLimiterWithoutUpdatingLastQuery() == NoopQuotaLimiter.get() && (tableLimiters == null || tableLimiters.isEmpty()) && (namespaceLimiters == null || namespaceLimiters.isEmpty()); }
@Override public synchronized String toString() { StringBuilder builder = new StringBuilder(); builder.append("QuotaState(ts=" + getLastUpdate()); if (isBypass()) { builder.append(" bypass"); } else { if (globalLimiter != NoopQuotaLimiter.get()) { //builder.append(" global-limiter"); builder.append(" " + globalLimiter); } } builder.append(')'); return builder.toString(); }
@Override public synchronized String toString() { StringBuilder builder = new StringBuilder(); builder.append("UserQuotaState(ts=" + getLastUpdate()); if (bypassGlobals) builder.append(" bypass-globals"); if (isBypass()) { builder.append(" bypass"); } else { if (getGlobalLimiterWithoutUpdatingLastQuery() != NoopQuotaLimiter.get()) { builder.append(" global-limiter"); } if (tableLimiters != null && !tableLimiters.isEmpty()) { builder.append(" ["); for (TableName table: tableLimiters.keySet()) { builder.append(" " + table); } builder.append(" ]"); } if (namespaceLimiters != null && !namespaceLimiters.isEmpty()) { builder.append(" ["); for (String ns: namespaceLimiters.keySet()) { builder.append(" " + ns); } builder.append(" ]"); } } builder.append(')'); return builder.toString(); }
/** * Setup the global quota information. * (This operation is part of the QuotaState setup) */ public synchronized void setQuotas(final Quotas quotas) { if (quotas.hasThrottle()) { globalLimiter = QuotaLimiterFactory.fromThrottle(quotas.getThrottle()); } else { globalLimiter = NoopQuotaLimiter.get(); } }
/** * Returns the limiter associated to the specified user/table. * * @param ugi the user to limit * @param table the table to limit * @return the limiter associated to the specified user/table */ public QuotaLimiter getUserLimiter(final UserGroupInformation ugi, final TableName table) { if (table.isSystemTable()) { return NoopQuotaLimiter.get(); } return getUserQuotaState(ugi).getTableLimiter(table); }
private void assertNoopLimiter(final QuotaLimiter limiter) { assertTrue(limiter == NoopQuotaLimiter.get()); assertNoThrottleException(limiter, 100); } }
isBypass = false; return isBypass ? NoopQuotaLimiter.get() : limiter;
/** * @return true if there is no quota information associated to this object */ public synchronized boolean isBypass() { return globalLimiter == NoopQuotaLimiter.get(); }
/** * Perform an update of the quota info based on the other quota info object. (This operation is * executed by the QuotaCache) */ public synchronized void update(final QuotaState other) { if (globalLimiter == NoopQuotaLimiter.get()) { globalLimiter = other.globalLimiter; } else if (other.globalLimiter == NoopQuotaLimiter.get()) { globalLimiter = NoopQuotaLimiter.get(); } else { globalLimiter = QuotaLimiterFactory.update(globalLimiter, other.globalLimiter); } lastUpdate = other.lastUpdate; }
/** * @return true if there is no quota information associated to this object */ @Override public synchronized boolean isBypass() { return !bypassGlobals && getGlobalLimiterWithoutUpdatingLastQuery() == NoopQuotaLimiter.get() && (tableLimiters == null || tableLimiters.isEmpty()) && (namespaceLimiters == null || namespaceLimiters.isEmpty()); }
@Override public synchronized String toString() { StringBuilder builder = new StringBuilder(); builder.append("QuotaState(ts=" + getLastUpdate()); if (isBypass()) { builder.append(" bypass"); } else { if (globalLimiter != NoopQuotaLimiter.get()) { // builder.append(" global-limiter"); builder.append(" " + globalLimiter); } } builder.append(')'); return builder.toString(); }
@Override public synchronized String toString() { StringBuilder builder = new StringBuilder(); builder.append("UserQuotaState(ts=" + getLastUpdate()); if (bypassGlobals) builder.append(" bypass-globals"); if (isBypass()) { builder.append(" bypass"); } else { if (getGlobalLimiterWithoutUpdatingLastQuery() != NoopQuotaLimiter.get()) { builder.append(" global-limiter"); } if (tableLimiters != null && !tableLimiters.isEmpty()) { builder.append(" ["); for (TableName table : tableLimiters.keySet()) { builder.append(" " + table); } builder.append(" ]"); } if (namespaceLimiters != null && !namespaceLimiters.isEmpty()) { builder.append(" ["); for (String ns : namespaceLimiters.keySet()) { builder.append(" " + ns); } builder.append(" ]"); } } builder.append(')'); return builder.toString(); }
/** * Setup the global quota information. (This operation is part of the QuotaState setup) */ public synchronized void setQuotas(final Quotas quotas) { if (quotas.hasThrottle()) { globalLimiter = QuotaLimiterFactory.fromThrottle(quotas.getThrottle()); } else { globalLimiter = NoopQuotaLimiter.get(); } }
/** * Returns the limiter associated to the specified user/table. * @param ugi the user to limit * @param table the table to limit * @return the limiter associated to the specified user/table */ public QuotaLimiter getUserLimiter(final UserGroupInformation ugi, final TableName table) { if (table.isSystemTable()) { return NoopQuotaLimiter.get(); } return getUserQuotaState(ugi).getTableLimiter(table); }
private void assertNoopLimiter(final QuotaLimiter limiter) { assertTrue(limiter == NoopQuotaLimiter.get()); assertNoThrottleException(limiter, 100); } }
static QuotaLimiter fromThrottle(final Throttle throttle) { TimeBasedLimiter limiter = new TimeBasedLimiter(); boolean isBypass = true; if (throttle.hasReqNum()) { setFromTimedQuota(limiter.reqsLimiter, throttle.getReqNum()); isBypass = false; } if (throttle.hasReqSize()) { setFromTimedQuota(limiter.reqSizeLimiter, throttle.getReqSize()); isBypass = false; } if (throttle.hasWriteNum()) { setFromTimedQuota(limiter.writeReqsLimiter, throttle.getWriteNum()); isBypass = false; } if (throttle.hasWriteSize()) { setFromTimedQuota(limiter.writeSizeLimiter, throttle.getWriteSize()); isBypass = false; } if (throttle.hasReadNum()) { setFromTimedQuota(limiter.readReqsLimiter, throttle.getReadNum()); isBypass = false; } if (throttle.hasReadSize()) { setFromTimedQuota(limiter.readSizeLimiter, throttle.getReadSize()); isBypass = false; } return isBypass ? NoopQuotaLimiter.get() : limiter; }