Hi, we have had some issues recently for people wanting to add a new index on an existing database. So far, the M16 version is supposed to fix most of the existing pb, but we still have to review the way we initialize indexes and creating them when requested.
There are a few things to remember : o we have two versions of the server : embedded and standalone. They have two different configurations (one is done through code and annotations, while the second is using the config ldif file) o the index initialization is done in two phases : 1) we load the configuration 2) we create the index instances o When an index is declared in the config, and does not exist on disk, then it has to be created at startup o we have two kind of indexes : system and users. Only the later can be added Now, the initialization is done in two places : o in the AbstractBtreePartition init() method, and it's shared by all the partitions o in each init() method of each partition. At this point, we do something like : Partition.init() - load the index config - call super.init - create the indexes The creation of new indexes is supposed to be done in the third step, but it depends on the first step, as we won't create anything that has not been loaded. It's supposed to work, but I do think we need to review this part of the code for each partition we support, because we have seen a long list of issues with this critical part of the code. I will create a JIRA for this task, and as soon as we have checked each specific use case, we wil be able to update the JIRA, up to the point we are sure that all the bases are covered. wdyt ?
