HBASE-1355 [performance] Cache family maxversions; we were calculating on each access

git-svn-id: https://svn.apache.org/repos/asf/hadoop/hbase/trunk@769577 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael Stack 2009-04-28 22:35:07 +00:00
parent 4ffb3cc723
commit 0ce8963a4d
4 changed files with 22 additions and 11 deletions

View File

@ -90,6 +90,8 @@ Release 0.20.0 - Unreleased
HBASE-1287 Partitioner class not used in TableMapReduceUtil.initTableReduceJob() HBASE-1287 Partitioner class not used in TableMapReduceUtil.initTableReduceJob()
(Lars George and Billy Pearson via Stack) (Lars George and Billy Pearson via Stack)
HBASE-1320 hbase-1234 broke filter tests HBASE-1320 hbase-1234 broke filter tests
HBASE-1355 [performance] Cache family maxversions; we were calculating on
each access
IMPROVEMENTS IMPROVEMENTS
HBASE-1089 Add count of regions on filesystem to master UI; add percentage HBASE-1089 Add count of regions on filesystem to master UI; add percentage

View File

@ -145,6 +145,11 @@ public class HColumnDescriptor implements ISerializable, WritableComparable<HCol
protected Map<ImmutableBytesWritable,ImmutableBytesWritable> values = protected Map<ImmutableBytesWritable,ImmutableBytesWritable> values =
new HashMap<ImmutableBytesWritable,ImmutableBytesWritable>(); new HashMap<ImmutableBytesWritable,ImmutableBytesWritable>();
/*
* Cache the max versions rather than calculate it every time.
*/
private int cachedMaxVersions = -1;
/** /**
* Default constructor. Must be present for Writable. * Default constructor. Must be present for Writable.
*/ */
@ -370,11 +375,13 @@ public class HColumnDescriptor implements ISerializable, WritableComparable<HCol
/** @return maximum number of versions */ /** @return maximum number of versions */
@TOJSON @TOJSON
public int getMaxVersions() { public synchronized int getMaxVersions() {
if (this.cachedMaxVersions == -1) {
String value = getValue(HConstants.VERSIONS); String value = getValue(HConstants.VERSIONS);
if (value != null) this.cachedMaxVersions = (value != null)?
return Integer.valueOf(value).intValue(); Integer.valueOf(value).intValue(): DEFAULT_VERSIONS;
return DEFAULT_VERSIONS; }
return this.cachedMaxVersions;
} }
/** /**

View File

@ -632,11 +632,13 @@ public class HBaseRPC {
Object value = method.invoke(instance, call.getParameters()); Object value = method.invoke(instance, call.getParameters());
int processingTime = (int) (System.currentTimeMillis() - startTime); int processingTime = (int) (System.currentTimeMillis() - startTime);
int qTime = (int) (startTime-receivedTime); int qTime = (int) (startTime-receivedTime);
if (LOG.isDebugEnabled()) {
LOG.debug("Served: " + call.getMethodName() + LOG.debug("Served: " + call.getMethodName() +
" queueTime= " + qTime + " queueTime= " + qTime +
" procesingTime= " + processingTime); " procesingTime= " + processingTime);
rpcMetrics.rpcQueueTime.inc(qTime); rpcMetrics.rpcQueueTime.inc(qTime);
rpcMetrics.rpcProcessingTime.inc(processingTime); rpcMetrics.rpcProcessingTime.inc(processingTime);
}
MetricsTimeVaryingRate m = rpcMetrics.metricsList.get(call.getMethodName()); MetricsTimeVaryingRate m = rpcMetrics.metricsList.get(call.getMethodName());

View File

@ -1139,9 +1139,9 @@ public class Store implements HConstants {
throw new IllegalArgumentException("Number of versions must be > 0"); throw new IllegalArgumentException("Number of versions must be > 0");
} }
// Make sure we do not return more than maximum versions for this store. // Make sure we do not return more than maximum versions for this store.
return wantedVersions > this.family.getMaxVersions() && int maxVersions = this.family.getMaxVersions();
wantedVersions != HConstants.ALL_VERSIONS? return wantedVersions > maxVersions &&
this.family.getMaxVersions(): wantedVersions; wantedVersions != HConstants.ALL_VERSIONS? maxVersions: wantedVersions;
} }
/** /**