Probably yes. Up to v0.10 the versioning uses a simple change counter, kept in the index. If two files differ, the highest change number wins. When you erase the index, you reset the change counter back to zero. So your new, reindexed node will have “older” versions of all files than the rest of the cluster, regardless of their modification time.
I’m not sure the version vectors in v0.11 will make a difference here though. They work like vector clocks so they detect conflicts, but resetting the index kind of takes that out of action.
I.e. assume you have a two device cluster, with devices A and B. A given file might have a version vector {A: 10, B: 20}. If each device makes a change to that file in parallel, A will get a vector {A: 11, B :20} and B will get {A: 10, B: 21}. These are in conflict, which we now detect and handle. Nice!
But if you reset the index on B and rescan, you will have A with {A: 11, B: 20} (the current version from above) and B with {A: 0, B: 1} (a new file with no history, discovered on B). There is no conflict here, A simply has a higher version, so the file on B will be overwritten.
Resetting the index on a device that is not in sync with the cluster is just inherently unsafe…
The alternative would be to let the cluster know that the index on B has been reset. That would make A change their vector from {A: 11, B: 20} to {A: 11, B: 0}. When B then announces {A: 0, B: 1} there is a conflict and it’ll be handled.
An easy but potentially annoying and labour intensive way of accomplishing this is to erase the keys on B when the index is reset, so it gets a new device ID… We could maybe also add something so that other nodes detect that the index announced by B is different from the B we knew before (an index creation time, say, or a unique index ID generated at creation time), and so all existing information about B (in the version vectors) should be discarded… Or the actual ID used for B in the version vectors could be derived at index creation time…
(You may notice from the above that whenever a device joins a cluster and already has files on disk, every file will be in conflict with the cluster. This is why you’ll see it as “Syncing” for a while thereafter, even if the contents are identical. The “conflicts” are handled without creating copies of the files though, as long as the conflict is just in metadata - we don’t create conflict copies of files if just the timestamp differs for example.)