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:
parent
4ffb3cc723
commit
0ce8963a4d
|
@ -90,6 +90,8 @@ Release 0.20.0 - Unreleased
|
|||
HBASE-1287 Partitioner class not used in TableMapReduceUtil.initTableReduceJob()
|
||||
(Lars George and Billy Pearson via Stack)
|
||||
HBASE-1320 hbase-1234 broke filter tests
|
||||
HBASE-1355 [performance] Cache family maxversions; we were calculating on
|
||||
each access
|
||||
|
||||
IMPROVEMENTS
|
||||
HBASE-1089 Add count of regions on filesystem to master UI; add percentage
|
||||
|
|
|
@ -145,6 +145,11 @@ public class HColumnDescriptor implements ISerializable, WritableComparable<HCol
|
|||
protected Map<ImmutableBytesWritable,ImmutableBytesWritable> values =
|
||||
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.
|
||||
*/
|
||||
|
@ -370,11 +375,13 @@ public class HColumnDescriptor implements ISerializable, WritableComparable<HCol
|
|||
|
||||
/** @return maximum number of versions */
|
||||
@TOJSON
|
||||
public int getMaxVersions() {
|
||||
public synchronized int getMaxVersions() {
|
||||
if (this.cachedMaxVersions == -1) {
|
||||
String value = getValue(HConstants.VERSIONS);
|
||||
if (value != null)
|
||||
return Integer.valueOf(value).intValue();
|
||||
return DEFAULT_VERSIONS;
|
||||
this.cachedMaxVersions = (value != null)?
|
||||
Integer.valueOf(value).intValue(): DEFAULT_VERSIONS;
|
||||
}
|
||||
return this.cachedMaxVersions;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -632,11 +632,13 @@ public class HBaseRPC {
|
|||
Object value = method.invoke(instance, call.getParameters());
|
||||
int processingTime = (int) (System.currentTimeMillis() - startTime);
|
||||
int qTime = (int) (startTime-receivedTime);
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("Served: " + call.getMethodName() +
|
||||
" queueTime= " + qTime +
|
||||
" procesingTime= " + processingTime);
|
||||
rpcMetrics.rpcQueueTime.inc(qTime);
|
||||
rpcMetrics.rpcProcessingTime.inc(processingTime);
|
||||
}
|
||||
|
||||
MetricsTimeVaryingRate m = rpcMetrics.metricsList.get(call.getMethodName());
|
||||
|
||||
|
|
|
@ -1139,9 +1139,9 @@ public class Store implements HConstants {
|
|||
throw new IllegalArgumentException("Number of versions must be > 0");
|
||||
}
|
||||
// Make sure we do not return more than maximum versions for this store.
|
||||
return wantedVersions > this.family.getMaxVersions() &&
|
||||
wantedVersions != HConstants.ALL_VERSIONS?
|
||||
this.family.getMaxVersions(): wantedVersions;
|
||||
int maxVersions = this.family.getMaxVersions();
|
||||
return wantedVersions > maxVersions &&
|
||||
wantedVersions != HConstants.ALL_VERSIONS? maxVersions: wantedVersions;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue