When using createIndex
in MongoDB 4.2+(Node.js driver), the docs say that all indexes are created in the foreground with exclusive locks only in the beginning and end of the operation. But will the actual createIndex
function resolve before the index build is complete? Or will it resolve once the index has been completely built and is ready for use?
Welcome to the MongoDB Community forums
Based on my understanding, it resolves once the index is completely built unless the background: true
option is specified. For further information on this topic, please refer to the createIndex - Node.js Driver Documentation.
I hope it helps. Please let us know if you have any further questions.
Best,
Kushagra
Ok so since the background
option is deprecated and ignored from 4.2 and onwards, createIndex
should now resolve only after the full index build is done, is that correct?
Yes, you can also notice this while building the index using the Nodejs driver
if there is any error during the index build it will be returned which would indicate it needed to build the entire thing to report the errors.
However in previous MongoDB versions, it will obtain an exclusive lock on the collection (see Index Build Operations on a Populated Collection — MongoDB Manual for a historical perspective on MongoDB 4.0 as an example), hence the need for the background
parameter.
Also, note that in MongoDB 4.4+ indexes are built parallelly across the replica set and only mark it ready when all nodes are complete (by default). You can also modify this behavior with the commitQuorum option
Let me know if you have any further questions.
Regards,
Kushagra
This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.