深入浅出 jackrabbit 九 索引合并(下)
2009-09-17 00:00:00 来源:WEB开发网也写的很清楚,当删除一个PersistentIndex时,检查一下indexs(PersistentIndex的集合)中是否包含这个要删除的PersistentIndex,如果包含就执行index.deleteIndex方法:
Java代码
synchronized void deleteIndex(PersistentIndex index) {
// remove it from the lists if index is registered
indexes.remove(index);
indexNames.removeName(index.getName());
// during recovery it may happen that an index had already been marked
// deleted, so we need to check if it is already marked deleted.
synchronized (deletable) {
if (!deletable.contains(index.getName())) {
deletable.addName(index.getName());
}
}
}
进入这个方法后,我们可以看到,所谓的删除,就是把indexNames中的PersistentIndex的name删除掉,并把这个要删除的indexName加入到deletable中。
关键是indexNames和deletable到底是个什么东西,从这里我们可以看出来,其实indexNames和deletable就记录着 PersistentIndex的name,也就是说这两个对象中保存着有效的索引目录和需要被删除的索引目录。当10个目录合并成一个目录的时候,就是把10个目录的name从indexNames中删除,并加入到deletable中去。
Jackrabbit就是通过这种方式来保证应用拓机时索引数据的正确性。
Tags:深入浅出 jackrabbit 索引
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接