I need to index huge amount of logs, so I decide to use AutoAddReplica feature with only one replica.
When using AutoAddReplicas with one replica, some benefits are expected.
- no redundant data files for replicas
- saving disk usage
- best indexing performance
I expected that Solr fails over just like HBase.
The feature worked almost as it was expected, except for some missing documents during failover.
I found two reasons for the missing.
1. The leader replica does not replay any transaction logs. But when there is only one replica, it should be the leader.
So I made the leader replica replay the transaction logs when using AutoAddReplicas with on replica.
But the above fix did not resolve the problem.
2. As failover occurred, the transaction log directory had a deeper directory depth. Just like this, tlog/tlog/tlog/...
The transaction log could not be replayed, because the transaction log directory was changed during failover.
So I made the transaction log directory not changed during failover.
After these fixes, AutoAddReplicas with one replica fails over well without losing any documents.