Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
None
Description
The Solr core restore functionality uses following criteria to decide if a given file is copied from backup directory or from current index directory.
case 1] File is available in both backup and current index directory
--> Compare the checksum and file length
--> If checksum and length matching, copy the file from current working directory.
--> If the checksum and length doesn't match, copy the file from backup directory.
case 2] File is available in only in backup directory (This can happen for a newly created core without any data).
--> Copy the file from backup directory.
Now the problem here is that we intentionally catch and ignore the error while reading the checksum for a file in the backup directory. Hence in case (2), it will result into restoration of a file without appropriate "checksum".
Here is the relevant code snippet,
https://github.com/apache/lucene-solr/blob/a5586d29b23f7d032e6d8f0cf8758e56b09e0208/solr/core/src/java/org/apache/solr/handler/RestoreCore.java#L82-L95