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