[
https://issues.apache.org/jira/browse/CASSANDRA-10681?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15022125#comment-15022125
]
Sam Tunnicliffe commented on CASSANDRA-10681:
---------------------------------------------
bq. allocation of the build task would require careful closing of them (which
your patch doesn't do
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|https://github.com/beobal/cassandra/tree/10681-v2-trunk], wdyt?
> make index building pluggable via IndexBuildTask
> ------------------------------------------------
>
> Key: CASSANDRA-10681
> URL: https://issues.apache.org/jira/browse/CASSANDRA-10681
> 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
(v6.3.4#6332)