https://github.com/thinkaurelius/titan
Revision d78a0801de473a1943061ef616d0252b55b98f66 authored by Dan LaRocque on 13 February 2015, 20:35:46 UTC, committed by Dan LaRocque on 13 February 2015, 20:51:20 UTC
278d8b988058183ed032b03959771864f6b37a0c introduced an exception
during graph startup when configured to use HBase with Metrics.  This
causes setup errors in HBaseOperationCountingTest, but it's not just
an issue of updating some outdated expectation numbers as in
ee8f75a604071db919f0a18a11a1bc72cc1c883f.  This is actually a problem
with Titan proper.

The commit that introduced this regression wraps the backend with
MetricsInstrumentedStoreManager early in startup, before wrapping with
TTLKCVSManager.  TTLKCVSManager expects `instanceof
CustomizeKCVSManager` on its encapsulated backend to be true unless it
implements cell-level TTL; this is true of HBaseSM, but not of
MetricsInstrumentedSM.  Doing instanceof <some manager-extension
interface> in wrappers is generally problematic since we have so many
manager/store wrapper classes.  The typecasts prevent the compiler
from helping us catch this stuff.  However, this is (hopefully) the
last commit before the next bugfix release, so I don't want to go
overboard with hurried refactoring and break something else.  I made
TTLKCVSManager implement CustomizeStoreKCVSManager and check that its
wrapped backend is instanceof same when the openDatabase(name, ttl)
method is invoked.
1 parent 5f2a016
History
Tip revision: d78a0801de473a1943061ef616d0252b55b98f66 authored by Dan LaRocque on 13 February 2015, 20:35:46 UTC
Fix HBase + TTL + Metrics
Tip revision: d78a080

README.textile

back to top