Hello everyone, I'm running SolrCloud cluster of 5 nodes with 5 shards and 3 replicas per shard. I usually see spikes in query performance during high indexing period. I would like to have stable query response time even during high indexing period. I recently upgraded to Solr 7.3 and running with 2 TLOG replicas and 1 PULL replica. Using a small maxWriteMBPerSec for replication and only query PULL replicas during indexing period, I'm still seeing long query time for some queries (although not as often as before the change).
My first question is 'Is it possible to control replication of non-leader like in master/slave configuration (eg: disablepoll, fetchindex)?'. This way, I can disable replication on the followers until committing is completed on the leaders while sending query requests to the followers (or just PULL replica) only. Then when data is committed on leaders, I would send query requests back to only leaders and tell the followers to start to fetch the newly updated index. If manual replication control isn't possible, I'm planning to have duplicate collections and use an alias to switch between the two collection at different times. For example: while 'collection1' collection being indexed, and alias 'search' would point to 'collection2' collection to serve query request. Once indexing is completed on 'collection1', 'search' alias would now point to 'collection1', and 'collection2' will be updated to be in sync with 'collection1'. The cycle repeats for next indexing cycle. My question for this method would be if there is any existing method to sync one collection to another so that I don't have to send the same update requests to the two collections. Also wondering if there are other better methods everyone is using? Thanks much! Cheers, -Nguyen