David,

I apologize I did not mention those things explicitly. All the places where
sstable files are accessed directly would have to be refactored.

Regarding TableMetrics - currently it includes many metrics, some of them
are unrelated to sstables at all, but there are metrics which are specific
to the current sstable format, like metrics related to index summaries or
bloom filters. The created gauges query certain methods on sstable reader -
I think the only common metrics for sstables we can leave in TableMetrics
are those for which there are query methods in generic sstable interface.
Other metrics, specific to the certain sstable format should be registered
by the implementation itself.

Speaking about the implementation, one idea I was thinking about was that
the factories for formats are registered using Java's native service
loader. This way we could get the list of all the factories on the
classpath and call some method, like `registerMetrics` during system
initialization. That could be also implemented in static initializer in the
factory but it would make it less obvious for the implementors where such
initialization should be done.

I hope this explains a bit

Thanks,
Jacek

Reply via email to