cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sam Tunnicliffe (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-10681) make index building pluggable via IndexBuildTask
Date Mon, 23 Nov 2015 14:04:11 GMT


Sam Tunnicliffe commented on CASSANDRA-10681:

bq. allocation of the build task would require careful closing of them (which your patch doesn't

good catch, thanks.

bq. we make a contract that each index type has to have it's own build task to be grouped

I still think it's overly restrictive to only group by index type, but the tablewide support
patch doesn't necessarily entail this. If we introduce a publicly accessible singleton and
use that rather the private {{CassandraIndexSupport}} instance on {{CassandraIndex}} we should
be able to share the build task among all indexes which are built in this way. I'd also probably
rename {{CassandraIndexSupport}} and {{CassandraIndexBuilder}} seeing as they could both be
reused by any impl. Also, the naming of {{TableWideSupport}} is a bit obscure for me, can
we just use {{IndexBuildingSupport}}? I guess the iface could be extended later with other
stuff, but we should probably cross that bridge if/when we come to it.  

Finally, the patch as is has a bug: {{SIM::buildIndexBlocking}} always throws an NPE as it
should be using {{Map::computeIfAbsent}} instead of {{Map::putIfAbsent}}. I've pushed an updated
version with those suggested changes [here|],

> make index building pluggable via IndexBuildTask
> ------------------------------------------------
>                 Key: CASSANDRA-10681
>                 URL:
>             Project: Cassandra
>          Issue Type: Sub-task
>          Components: Local Write-Read Paths
>            Reporter: Pavel Yaskevich
>            Assignee: Pavel Yaskevich
>            Priority: Minor
>              Labels: sasi
>             Fix For: 3.2
>         Attachments: 0001-add-table-support-for-multi-table-builds.patch, 0001-make-index-building-pluggable-via-IndexBuildTask.patch
> Currently index building assumes one and only way to build all of the indexes - through
SecondaryIndexBuilder - which merges all of the sstables together, collates columns etc. Such
works fine for built-in indexes but not for SASI since it's attaches to every SSTable individually.
We need a "IndexBuildTask" interface (based on CompactionInfo.Holder) to be returned from
Index on demand to give power to SI interface implementers to decide how build should work.
This might be less effective for CassandraIndex, since this effectively means that collation
will have to be done multiple times on the same data, but  nevertheless is a good compromise
for clean interface to outside world.

This message was sent by Atlassian JIRA

View raw message