Description
If a processor chain is used with custom processors,
they are not used in case of node failure during log replay.
Here is the code:
UpdateLog.java
public void doReplay(TransactionLog translog) { try { loglog.warn("Starting log replay " + translog + " active="+activeLog + " starting pos=" + recoveryInfo.positionOfStart); tlogReader = translog.getReader(recoveryInfo.positionOfStart); // NOTE: we don't currently handle a core reload during recovery. This would cause the core // to change underneath us. // TODO: use the standard request factory? We won't get any custom configuration instantiating this way. RunUpdateProcessorFactory runFac = new RunUpdateProcessorFactory(); DistributedUpdateProcessorFactory magicFac = new DistributedUpdateProcessorFactory(); runFac.init(new NamedList()); magicFac.init(new NamedList()); UpdateRequestProcessor proc = magicFac.getInstance(req, rsp, runFac.getInstance(req, rsp, null));
I think this is a big issue, because a lot of people will discover it when a node will crash in the best case... and I think it's too late.
It means to me that processor chains are not usable with Solr Cloud currently.