Hi all, We are working with cassandra 3.0.14 using secondary indexes and we realized that it's not possible to create several index simultaneously, in fact you can send several "CREATE CUSTOM INDEX..." statements but cassandra doesn't start to build one index until the previous one has been completely built.
I've been analyzing how index creation is managed by Cassandra and I found the following: SecondaryIndexManager class uses an "asynExecutor" to execute the initialization index task, the asynExecutor object is initialized this way: private static final ExecutorService asyncExecutor = new JMXEnabledThreadPoolExecutor(1, StageManager.KEEPALIVE, TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new NamedThreadFactory("SecondaryIndexManagement"), "internal"); So the asynExecutor is being created with a corePoolSize=1 and maximumPoolSize=1 and this is the reason while the index creation tasks are being serialized. I've been able to change coreThreads and maximumThreads for this executor via jmx but I haven't found any other way to modify the size of this pool and I don't know the reason why this pool is set with "fixed" size 1. Is it possible to change the pool size in any other way? Could there be a concurrency problem if several index are created in parallel and is this the reason why the pool size is set to 1? Thanks in advance. Best regards.