Commit Graph

224 Commits

Author SHA1 Message Date
Josh Elser d671a1dbc6 HBASE-17955 Various reviewboard improvements to space quota work
Most notable change is to cache SpaceViolationPolicyEnforcement objects
in the write path. When a table has no quota or there is not SpaceQuotaSnapshot
for that table (yet), we want to avoid creating lots of
SpaceViolationPolicyEnforcement instances, caching one instance
instead. This will help reduce GC pressure.
2017-05-22 13:41:36 -04:00
Josh Elser 13af7f8ac6 HBASE-17002 JMX metrics and some UI additions for space quotas 2017-05-22 13:41:35 -04:00
yoshida.shinya ef94de3eb7 HBASE-17957 Custom metrics of replicate endpoints don't prepend "source." to global metrics
Signed-off-by: tedyu <yuzhihong@gmail.com>
2017-05-01 08:11:59 -07:00
ckulkarni eb6ded4849 HBASE-17448 Export metrics from RecoverableZooKeeper
Added metrics for RecoverableZooKeeper related to specific exceptions,
total failed ZooKeeper API calls and latency histograms for read,
write and sync operations. Also added unit tests for the same. Added
service provider for the ZooKeeper metrics implementation inside the
hadoop compatibility module.

Signed-off-by: Andrew Purtell <apurtell@apache.org>
2017-04-26 18:30:13 -07:00
Umesh Agashe c8461456d0 HBASE-17888: Added generic methods for updating metrics on submit and finish of a procedure execution
Signed-off-by: Michael Stack <stack@apache.org>
2017-04-14 11:51:08 -07:00
Jan Hentschel b53f354763 HBASE-17532 Replaced explicit type with diamond operator
Signed-off-by: Michael Stack <stack@apache.org>
2017-03-07 11:22:51 -08:00
Ashu Pachauri d2c083d21c HBASE-17627 Active workers metric for thrift (Ashu Pachauri)
Signed-off-by: Gary Helmling <garyh@apache.org>
2017-02-15 14:50:19 -08:00
Gary Helmling 7a6518f05d HBASE-17578 Thrift metrics should handle exceptions 2017-02-06 11:39:49 -08:00
Jerry He bc168b419d HBASE-17581 mvn clean test -PskipXXXTests does not work properly for some modules (Yi Liang) 2017-02-02 11:05:17 -08:00
Michael Stack fb2c89b1b3 HBASE-16785 We are not running all tests
M TestStressWALProcedureStore.java
Disable test that now runs that fails because of difference in pb3.1.0.

Signed-off-by: Michael Stack <stack@apache.org>
2017-01-26 21:49:18 -08:00
Michael Stack 1ee8776273 HBASE-16785 We are not running all tests Do nothing patch just to get baseline of how many tests we run 2017-01-26 12:21:00 -08:00
Enis Soztutar c64a1d1994 HBASE-9774 HBase native metrics and metric collection for coprocessors 2017-01-25 11:47:35 -08:00
Jan Hentschel 55a1aa1e73 HBASE-10699 Set capacity on ArrayList where possible and use isEmpty instead of size() == 0
Signed-off-by: Michael Stack <stack@apache.org>
2017-01-20 22:58:20 -08:00
Guanghao Zhang b3d8d06703 HBASE-17205 Add a metric for the duration of region in transition 2016-12-01 10:13:37 -08:00
Ashu Pachauri 7bcbac91a2 HBASE-16302 age of last shipped op and age of last applied op should be histograms
Signed-off-by: Ashish Singhi <ashishsinghi@apache.org>
2016-11-29 13:51:32 +05:30
Guanghao Zhang cc03f7ad53 HBASE-16561 Add metrics about read/write/scan queue length and active read/write/scan handler count
Signed-off-by: zhangduo <zhangduo@apache.org>
2016-11-29 09:43:30 +08:00
Enis Soztutar 03bc884ea0 HBASE-17017 Remove the current per-region latency histogram metrics 2016-11-08 18:31:53 -08:00
Dustin Pho fcef2c02c9 HBASE-16661 Add last major compaction age to per-region metrics
Signed-off-by: Gary Helmling <garyh@apache.org>
2016-10-10 15:16:12 -07:00
Sean Busbey 76396714e1 HBASE-15984 Handle premature EOF treatment of WALs in replication.
In some particular deployments, the Replication code believes it has
reached EOF for a WAL prior to succesfully parsing all bytes known to
exist in a cleanly closed file.

Consistently this failure happens due to an InvalidProtobufException
after some number of seeks during our attempts to tail the in-progress
RegionServer WAL. As a work-around, this patch treats cleanly closed
files differently than other execution paths. If an EOF is detected due
to parsing or other errors while there are still unparsed bytes before
the end-of-file trailer, we now reset the WAL to the very beginning and
attempt a clean read-through.

In current testing, a single such reset is sufficient to work around
observed dataloss. However, the above change will retry a given WAL file
indefinitely. On each such attempt, a log message like the below will
be emitted at the WARN level:

  Processing end of WAL file '{}'. At position {}, which is too far away
  from reported file length {}. Restarting WAL reading (see HBASE-15983
  for details).

Additionally, this patch adds some additional log detail at the TRACE
level about file offsets seen while handling recoverable errors. It also
add metrics that measure the use of this recovery mechanism.
2016-09-29 10:07:14 -05:00
Enis Soztutar eb112783ae HBASE-16604 Scanner retries on IOException can cause the scans to miss data - RECOMMIT after revert 2016-09-23 11:27:13 -07:00
Enis Soztutar 39db0cac78 Revert "HBASE-16604 Scanner retries on IOException can cause the scans to miss data"
This reverts commit 83cf44cd3f.

Reverting because accidental files are committed with this.
2016-09-23 11:25:23 -07:00
Enis Soztutar 83cf44cd3f HBASE-16604 Scanner retries on IOException can cause the scans to miss data 2016-09-22 12:06:11 -07:00
zhangduo 6eb6225456 HBASE-7612 [JDK8] Replace use of high-scale-lib counters with intrinsic facilities 2016-09-19 13:37:24 +08:00
Geoffrey cb02be38ab HBASE-16448 Custom metrics for custom replication endpoints
Signed-off-by: Andrew Purtell <apurtell@apache.org>
2016-08-23 17:17:08 -07:00
Reid Chan abfd584fe6 HBASE-14743 Add metrics around HeapMemoryManager. (Reid Chan)
Change-Id: I7305f7b7034b216930b5fb5c57de9ba5eabf96d8

Signed-off-by: Apekshit Sharma <appy@apache.org>
2016-07-25 14:32:38 -07:00
Apekshit Sharma eff38ccf8c Revert HBASE-14743 because of wrong attribution. Since I added commit message to the raw patch, it's making me as author instead of Reid. I should have used --author flag to set Reid as author.
This reverts commit 064271da16.
2016-07-25 14:32:38 -07:00
Apekshit Sharma 064271da16 HBASE-14743 Add metrics around HeapMemoryManager. (Reid Chan)
Change-Id: I60b2435355b3e605e7d91cbf5aca5d2988f26f33
2016-07-25 13:45:50 -07:00
Enis Soztutar 6d94925af9 HBASE-16211 JMXCacheBuster restarting the metrics system might cause tests to hang 2016-07-12 13:43:52 -07:00
Jingcheng Du 518faa735b HBASE-15353 Add metric for number of CallQueueTooBigException's 2016-06-24 13:00:06 +08:00
Gary Helmling f4cec2e202 HBASE-16085 Add a metric for failed compactions 2016-06-23 15:38:58 -07:00
stack 6d5a25935e Revert "HBASE-15967 Metric for active ipc Readers and make default fraction of cpu count"
Revert mistaken commit
This reverts commit 1125215aad.
2016-06-07 16:41:01 -07:00
stack 1125215aad HBASE-15967 Metric for active ipc Readers and make default fraction of cpu count
Add new metric hbase.regionserver.ipc.runningReaders
Also make it so Reader count is a factor of processor count
2016-06-07 13:10:14 -07:00
Sean Mackrory 3b6e6e6c25 HBASE-15889. String case conversions are locale-sensitive, used without locale
Signed-off-by: Sean Busbey <busbey@apache.org>
2016-05-28 10:41:31 -07:00
Enis Soztutar b75b226804 HBASE-15740 Replication source.shippedKBs metric is undercounting because it is in KB 2016-05-09 10:25:49 -07:00
tedyu f76ffb7f38 HBASE-15742 Reduce allocation of objects in metrics (Phil Yang) 2016-05-03 08:58:00 -07:00
Enis Soztutar 4c0587134a HBASE-15671 Add per-table metrics on memstore, storefile and regionsize (Alicia Ying Shu) 2016-04-21 13:33:26 -07:00
Andrew Purtell b6617b4eb9 HBASE-15663 Hook up JvmPauseMonitor to ThriftServer 2016-04-20 17:37:35 -07:00
Andrew Purtell a330a2b505 HBASE-15662 Hook up JvmPauseMonitor to REST server 2016-04-20 17:37:35 -07:00
Andrew Purtell 2c26fe37ac HBASE-15614 Report metrics from JvmPauseMonitor 2016-04-20 17:37:34 -07:00
Enis Soztutar 18d70bc680 HBASE-15518 Add Per-Table metrics back (Alicia Ying Shu) 2016-04-20 14:35:45 -07:00
tedyu 8541fe4ad1 HBASE-15093 Replication can report incorrect size of log queue for the global source when multiwal is enabled (Ashu Pachauri) 2016-04-11 08:17:20 -07:00
Elliott Clark a71ce6e738 HBASE-14983 Create metrics for per block type hit/miss ratios
Summary: Missing a root index block is worse than missing a data block. We should know the difference

Test Plan: Tested on a local instance. All numbers looked reasonable.

Differential Revision: https://reviews.facebook.net/D55563
2016-03-30 11:41:11 -07:00
Enis Soztutar b3fe4ed16c HBASE-15412 Add average region size metric (Alicia Ying Shu) 2016-03-22 14:46:27 -07:00
Enis Soztutar 797562e6c3 HBASE-15464 Flush / Compaction metrics revisited 2016-03-21 17:50:02 -07:00
Enis Soztutar 51259fe4a5 HBASE-15377 Per-RS Get metric is time based, per-region metric is size-based (Heng Chen) 2016-03-15 11:22:18 -07:00
Enis Soztutar a979d85582 HBASE-15435 Add WAL (in bytes) written metric (Alicia Ying Shu) 2016-03-10 20:16:30 -08:00
chenheng f30afa05d9 HBASE-15376 ScanNext metric is size-based while every other per-operation metric is time based 2016-03-07 17:36:40 +08:00
Jonathan M Hsieh f658f3ef83 HBASE-15356 Remove unused imports (Youngjoon Kim) 2016-03-03 11:42:38 -08:00
Elliott Clark 77133fd225 HBASE-15222 Addendum - Use less contended classes for metrics 2016-02-25 09:08:11 -08:00
Mikhail Antonov 43f99def67 HBASE-15136 Explore different queuing behaviors while busy 2016-02-24 20:41:30 -08:00
Elliott Clark a3b4575f70 HBASE-15319 clearJmxCache does not take effect actually 2016-02-24 16:29:05 -08:00
Elliott Clark 630a65825e HBASE-15222 Use less contended classes for metrics
Summary:
Use less contended things for metrics.
For histogram which was the largest culprit we use FastLongHistogram
For atomic long where possible we now use counter.

Test Plan: unit tests

Reviewers:

Subscribers:

Differential Revision: https://reviews.facebook.net/D54381
2016-02-24 14:34:05 -08:00
Mikhail Antonov e58c0385a7 HBASE-15135 Add metrics for storefile age 2016-02-22 02:21:02 -08:00
stack eacf7bcf97 HBASE-15163 Add sampling code and metrics for get/scan/multi/mutate count separately (Yu Li) 2016-02-06 06:30:56 -08:00
chenheng 8f20bc748d HBASE-15197 Expose filtered read requests metric to metrics framework and Web UI (Eungsop Yoo) 2016-02-05 10:57:14 +08:00
tedyu 5266b07708 HBASE-15068 Add metrics for region normalization plans 2016-01-07 03:13:16 -08:00
Mikhail Antonov abe30b52a8 HBASE-14534 Bump yammer/coda/dropwizard metrics dependency version 2015-12-15 12:11:27 -08:00
Elliott Clark 48e217a7db HBASE-14946 Don't allow multi's to over run the max result size.
Summary:
* Add VersionInfoUtil to determine if a client has a specified version or better
* Add an exception type to say that the response should be chunked
* Add on client knowledge of retry exceptions
* Add on metrics for how often this happens

Test Plan: Added a unit test

Differential Revision: https://reviews.facebook.net/D51771
2015-12-10 18:10:32 -08:00
ramkrishna 26ac60b03f HBASE-13153 Bulk Loaded HFile Replication (Ashish Singhi) 2015-12-10 13:07:46 +05:30
Lars Hofhansl 7bfbb6a3c9 HBASE-14869 Better request latency and size histograms. (Vikas Vishwakarma and Lars Hofhansl) 2015-12-08 17:02:27 -08:00
Vrishal Kulkarni 1f999c1e2b HBASE-14719 Add metrics for master WAL count (numMasterWALs). Metric numMasterWALs appears as follows in metrics dump
{
    "name" : "Hadoop:service=HBase,name=Master,sub=Procedure",
    "modelerType" : "Master,sub=Procedure",
    "tag.Context" : "master",
    "tag.Hostname" : "vrishal-mbp",
    "numMasterWALs" : 1
},

Signed-off-by: Elliott Clark <eclark@apache.org>
2015-12-07 11:14:29 -08:00
stack 51503efcf0 HBASE-13857 Slow WAL Append count in ServerMetricsTmpl.jamon is hardcoded to zero (Vrishal Kulkarni) 2015-12-03 17:00:29 -08:00
Sanjeev Lakshmanan 6b11adbfa4 HBASE-14862 Add support for reporting p90 for histogram metrics
Signed-off-by: Andrew Purtell <apurtell@apache.org>
2015-11-23 15:55:45 -08:00
Elliott Clark a48d30984a HBASE-14793 Allow limiting size of block into L1 block cache. 2015-11-17 10:37:49 -08:00
Gary Helmling 683f84e6a2 HBASE-14700 Support a permissive mode for secure clusters to allow SIMPLE auth clients 2015-10-30 19:45:46 -07:00
Matteo Bertozzi 36a196722c HBASE-14669 remove unused import and fix javadoc 2015-10-22 09:25:26 -07:00
Sean Busbey a545d71295 HBASE-14516 categorize hadoop-compat tests
* make sure the test classifications are in test scope for their use in the hadoop-compat modules
* added a test category for 'metrics related' since that's what all these tests are for
* categorized tests as small,metrics
2015-10-03 01:08:53 -05:00
Sanjeev Srivatsa 76463a36f5 HBASE-14459 Add response and request size metrics
Signed-off-by: Andrew Purtell <apurtell@apache.org>
2015-09-30 18:22:48 -07:00
Andrew Purtell 20ed465d07 HBASE-14205 RegionCoprocessorHost System.nanoTime() performance bottleneck 2015-09-24 11:16:36 -07:00
Enis Soztutar 17bdf9fa8c HBASE-14082 Add replica id to JMX metrics names (Lei Chen) 2015-09-16 17:29:57 -07:00
Elliott Clark c1ac4bb860 HBASE-14278 Fix NPE that is showing up since HBASE-14274 went in 2015-09-16 17:20:06 -07:00
tedyu b7a67c6382 HBASE-14314 Metrics for block cache should take region replicas into account 2015-09-04 10:04:29 -07:00
tedyu 9b2325e16f HBASE-14274 Addendum sets closed to true when closing 2015-08-21 15:58:23 -07:00
Elliott Clark bcef28eefa HBASE-14274 Deadlock in region metrics on shutdown: MetricsRegionSourceImpl vs MetricsRegionAggregateSourceImpl
Signed-off-by: stack <stack@apache.org>
2015-08-20 20:47:37 -07:00
Elliott Clark ad2c7c6336 HBASE-14166 Per-Region metrics can be stale 2015-08-17 11:22:01 -07:00
Nick Dimiduk e4106b4c4a Revert "HBASE-12911 Client-side metrics"
This reverts commit 06989fd1f9.
2015-08-10 17:13:09 -07:00
Nick Dimiduk 06989fd1f9 HBASE-12911 Client-side metrics
First pass. Plumbs up metrics for each connection instance. Exposes
static information about those connections (zk quorum and root node,
cluster id, user). Exposes basic thread pool utilization gauges for
"meta lookup" and "batch" pools.
2015-08-10 16:48:48 -07:00
Sean Busbey 1b0b67fb7c HBASE-14085 Update LICENSE and NOTICE files.
* corrects license/notice for source distribution
* adds inception year to correct copyright in generated NOTICE files for jars
* updates project names in poms to use "Apache HBase" instead of "HBase" so jar NOTICE files will be correct
* uses append-resources to include supplemental info on jars with 3rd party works in source
* adds an hbase specific resource bundle for jars that include 3rd party works for binaries
** uses supplemental-model to fill in license gaps
** uses the above and a shade plugin transformation to build proper files for shaded jars.
** uses the above and the assembly plugin to build the proper files for bin assembly
* adds a NOTICE item for things copied out of Hadoop (TODO legal-discuss)
2015-08-04 17:16:56 -05:00
tedyu 20d1fa36e7 HBASE-13965 Stochastic Load Balancer JMX Metrics (Lei Chen) 2015-08-03 12:45:38 -07:00
Andrew Purtell 5ab45438da HBASE-14176 Add missing headers to META-INF files 2015-07-31 11:22:20 -07:00
Jonathan M Hsieh 493f36c899 HBASE-11339 Merge remote-tracking branch 'apache/hbase-11339' (Jingcheng Du) 2015-07-22 12:51:11 -07:00
Gábor Lipták 5826bf2a7c HBASE-13963 Do not leak jdk.tools dependency from hbase-annotations
Signed-off-by: Sean Busbey <busbey@apache.org>
2015-06-26 08:48:02 -05:00
anoopsjohn b31a6acf4c HBASE-13763 Handle the rename, annotation and typo stuff in MOB. (Jingcheng) 2015-05-28 13:43:12 +05:30
Jonathan M Hsieh 09a00efc0b Merge remote-tracking branch 'apache/master' (5/19/15) into hbase-11339
Patches that caused deltas:
HBASE-10810 - around HColumnDescriptor 'should' vs 'is' api.
HBASE-11677 - LOG was made private
HBASE-11927 - Checksum constant changed
HBASE-10800 - CellComparator instead of KVComparator

Conflicts:
	hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DeleteTableHandler.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DefaultStoreEngine.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/DefaultCompactor.java
	hbase-server/src/test/java/org/apache/hadoop/hbase/util/LoadTestTool.java
2015-05-19 16:30:21 -07:00
Enis Soztutar 59a6e031fb HBASE-13661 Correct binary compatibility issues discovered in 1.1.0RC0 2015-05-11 18:28:29 -07:00
Jonathan M Hsieh 0e20bbf6a3 Merge branch 'apache/master' (4/16/15) into hbase-11339
API conflicts and test fixes
Update LoadTestTool.COLUMN_FAMILY -> DEFAULT_COLUMN_FAMILY due HBASE-11842
Use new 1.0+ api in some tests
Use updated Scanners internal api
Fix to take into account  HBASE-13203 - procedure v2 table delete

Conflicts:
	hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
	hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java
2015-05-01 08:18:51 -07:00
Elliott Clark 2c5dc53a32 HBASE-13477 Create metrics on failed requests
Summary: Add metrics on how many requests are exceptions and what type.

Test Plan: behold unit tests.

Differential Revision: https://reviews.facebook.net/D37167
2015-04-17 15:37:31 -07:00
tedyu 64941c6151 HBASE-13369 Expose scanNext stats to region server level 2015-03-31 15:25:36 -07:00
tedyu 619d34487e HBASE-13213 Split out locality metrics among primary and secondary region 2015-03-31 15:16:08 -07:00
Elliott Clark 55a5a3be33 HBASE-13364 Make error prone off by default 2015-03-30 16:03:53 -07:00
nke 18256fc954 HBASE-8725 Add total time RPC call metrics
Signed-off-by: Elliott Clark <eclark@apache.org>
2015-03-26 11:11:53 -07:00
Josh Elser 72855c584e HBASE-13236 Add addt'l lifecycle-mapping executions.
Adds a number of lifecycle-mapping entries which
prevent errors from showing up in Eclipse on a fresh
import of HBase. For plugins defined in the top-level
pom, the mapping is added there; otherwise, the mapping
is pushed down to the child pom.

Signed-off-by: Sean Busbey <busbey@apache.org>
2015-03-13 22:35:52 -05:00
Misty Stanley-Jones 39425a8558 HBASE-11670 Generate PDF of Reference Guide 2015-03-05 09:31:11 +10:00
Jonathan M Hsieh fe335b683c Merge branch 'master' (2/11/15) into hbase-11339
Conflicts:
	hbase-client/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java
	hbase-client/src/test/java/org/apache/hadoop/hbase/TestHColumnDescriptor.java
	hbase-common/src/main/java/org/apache/hadoop/hbase/TagType.java
	hbase-common/src/main/resources/hbase-default.xml
	hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java
	hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java
	hbase-it/src/test/java/org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/io/HFileLink.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/DeleteTableHandler.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/DisabledTableSnapshotHandler.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DefaultStoreEngine.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/Compactor.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/DefaultCompactor.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/StripeCompactor.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/RestoreSnapshotHelper.java
	hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotReferenceUtil.java
	hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java
	pom.xml
	src/main/docbkx/book.xml
	src/main/docbkx/ops_mgt.xml
	src/main/docbkx/schema_design.xml
2015-02-22 12:54:45 -08:00
Andrew Purtell cecc475d2f HBASE-12102 Duplicate keys in HBase.RegionServer metrics JSON (Ravi Kishore Valeti) 2015-02-18 08:08:46 -08:00
Ashish Singhi 16ed345191 HBASE-9531 a command line (hbase shell) interface to retreive the replication metrics and show replication lag
Signed-off-by: Andrew Purtell <apurtell@apache.org>
2015-02-12 14:50:01 -08:00
Sean Busbey 418ea93774 HBASE-12898 ensure direct dependencies are declared. 2015-01-22 14:33:25 -06:00
Misty Stanley-Jones 1a21c1684c HBASE-11533 Asciidoc Proof of Concept 2015-01-13 22:32:29 -08:00
Lars Hofhansl 7774f964e6 HBASE-12779 SplitTransaction: Add metrics. 2015-01-05 17:13:58 -08:00
Esteban Gutierrez b2eea8cac6 HBASE-12695 JDK 1.8 compilation broken
Signed-off-by: stack <stack@apache.org>
2014-12-29 11:02:04 -08:00