Как принять онлайн горячее резервное копирование индекса lucene FileDirecotry? - PullRequest
0 голосов
/ 16 июля 2009

Я думаю о добавлении JMX-компонента для горячего резервного копирования индекса lucene.

LuceneMBean mbean = new LuceneMBeanImpl (); Имя_объекта = новое имя_объекта ("indexing.index: type = lucene"); MBeanServer mbs = ManagementFactory.getPlatformMBeanServer (); mbs.registerMBean (mbean, name);

LuceneMBean будет иметь метод с именем backupIndex (каталог String).

Я просмотрел документы lucene и обнаружил метод copy () в Directory. Если у меня в папке Writer Open будет ли этот метод работать? В основном мой фрагмент кода выглядит следующим образом:

public class LuceneMBeanImpl implements LuceneMBean{
     public void backupIndex(String directory){
           Directory fileDirectory =  FSDirectory.getDirectory(directory);
           Directory.copy(masterDirectory, fileDirectory,false);
     }
}

1 Ответ

0 голосов
/ 16 июля 2009

Я думаю, что открытый Writer должен быть в порядке, но вы определенно не можете копировать, пока другой поток модифицирует индекс, или вы можете получить FileNotFoundException. Из источника:

 /**
   * Copy contents of a directory src to a directory dest.
   * If a file in src already exists in dest then the
   * one in dest will be blindly overwritten.
   *
   * <p><b>NOTE:</b> the source directory cannot change
   * while this method is running.  Otherwise the results
   * are undefined and you could easily hit a
   * FileNotFoundException.
   *
   * @param src source directory
   * @param dest destination directory
   * @param closeDirSrc if <code>true</code>, call {@link #close()} method on source directory
   * @throws IOException
   */
  public static void copy(Directory src, Directory dest, boolean closeDirSrc) throws IOException {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...