throws CommitFailedException {
for (String name : definitions.getChildNodeNames()) {
NodeBuilder definition = definitions.getChildNode(name);
if (Objects.equal(async, getString(definition, ASYNC_PROPERTY_NAME))) {
String type = getString(definition, TYPE_PROPERTY_NAME);
Editor editor = provider.getIndexEditor(type, definition, root);
if (editor == null) {
// trigger reindexing when an indexer becomes available
definition.setProperty(REINDEX_PROPERTY_NAME, true);
} else if (getBoolean(definition, REINDEX_PROPERTY_NAME)) {
definition.setProperty(REINDEX_PROPERTY_NAME, false);