diff options
author | Florian Zschocke <fzs@users.noreply.github.com> | 2017-03-18 13:37:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-18 13:37:25 +0100 |
commit | 2f74123ca0deaa138609a2126e0fc897167dac48 (patch) | |
tree | 683607a1e3dab5d29e18b77d0c4705632b74e117 /src/main/java/com/gitblit/utils/LuceneIndexStore.java | |
parent | 71211a8cdfae8d528130cedf3e67d21e130ee8a0 (diff) | |
parent | 63dbdfda13daa78a26f1c2e77b0a4bfd5a35df8d (diff) | |
download | gitblit-2f74123ca0deaa138609a2126e0fc897167dac48.tar.gz gitblit-2f74123ca0deaa138609a2126e0fc897167dac48.zip |
Merge pull request #1168 from lucamilanesio/bump-to-lucene-5.5.2
Bump to Lucene 5.5.2
The new code will create Lucene indices in a new directory named after codec and index version.
This provides for easy and safe up- and downgrades. But it also means that the old indices will
stick around on disk. What this version is missing is a kind of "garbage collection" deleting old, unused
indices when they are no longer needed. That task needs to be done manually currently. We should
at leas at some point provide a script for it.
Diffstat (limited to 'src/main/java/com/gitblit/utils/LuceneIndexStore.java')
-rw-r--r-- | src/main/java/com/gitblit/utils/LuceneIndexStore.java | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/utils/LuceneIndexStore.java b/src/main/java/com/gitblit/utils/LuceneIndexStore.java new file mode 100644 index 00000000..c05e2019 --- /dev/null +++ b/src/main/java/com/gitblit/utils/LuceneIndexStore.java @@ -0,0 +1,98 @@ +/* + * Copyright 2017 gitblit.com. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.gitblit.utils; + +import java.io.File; +import java.nio.file.Path; + +/** + * @author Florian Zschocke + * + * @since 1.9.0 + */ +public class LuceneIndexStore +{ + + public static final int LUCENE_CODEC_VERSION = 54; + + protected File indexFolder; + + /** + * Constructor for a base folder that contains the version specific index folders + * and an index version. + * + * @param luceneFolder + * Path to the base folder for the Lucene indices, i.e. the common "lucene" directory. + * @param indexVersion + * Version of the index definition + */ + public LuceneIndexStore(File luceneFolder, int indexVersion) + { + this.indexFolder = new File(luceneFolder, indexVersion + "_" + LUCENE_CODEC_VERSION); + } + + + + /** + * Create the Lucene index directory for this index version and Lucene codec version + */ + public void create() + { + if (! indexFolder.exists()) { + indexFolder.mkdirs(); + } + } + + + /** + * Delete the Lucene index directory for this index version and Lucene codec version + * + * @return True if the directory could successfully be deleted. + */ + public boolean delete() + { + if (indexFolder.exists()) { + return FileUtils.delete(indexFolder); + } + return true; + } + + + + /** + * @return The Path to the index folder + */ + public Path getPath() + { + return indexFolder.toPath(); + } + + + + /** + * Check if an index of the respective version, or compatible, already exists. + * + * @return True if an index exists, False otherwise + */ + public boolean hasIndex() + { + return indexFolder.exists() && + indexFolder.isDirectory() && + (indexFolder.list().length > 1); // Must have more than 'write.lock' + } + +} |