Migrate to Lucene 6.1.0
This change needs a target platform update to include the latest Lucenes
from latest Orbit. I could have included it myself but the TP files were
named 'neon' so I was not sure what they were meant for. I can rework it
if you need me to.
Bug: 514241
Change-Id: Iee330cfde5d13b9569a05cb91267329b398ad77f
Signed-off-by: Sopot Cela <scela@redhat.com>
Signed-off-by: Andreas Sewe <andreas.sewe@codetrails.com>
diff --git a/bundles/org.eclipse.epp.logging.aeri.ide/META-INF/MANIFEST.MF b/bundles/org.eclipse.epp.logging.aeri.ide/META-INF/MANIFEST.MF
index 1e93e91..ed14381 100644
--- a/bundles/org.eclipse.epp.logging.aeri.ide/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.epp.logging.aeri.ide/META-INF/MANIFEST.MF
@@ -25,7 +25,6 @@
org.eclipse.osgi.services,
org.eclipse.core.net,
org.eclipse.emf.ecore,
- org.apache.lucene.core;bundle-version="[3.5.0,4.0.0)",
org.apache.commons.lang3;bundle-version="[3.1.0,4.0.0)",
org.eclipse.e4.core.contexts
Import-Package: com.google.common.annotations;version="[15.0.0,16.0.0)";resolution:=optional,
@@ -54,7 +53,14 @@
org.apache.http.impl.client;version="[4.3.0,5.0.0)",
org.apache.http.impl.client.cache;version="[4.3.0,5.0.0)",
org.apache.http.message;version="[4.3.0,5.0.0)",
- org.apache.http.util;version="[4.3.0,5.0.0)"
+ org.apache.http.util;version="[4.3.0,5.0.0)",
+ org.apache.lucene.analysis;version="[6.1.0,7.0.0)",
+ org.apache.lucene.analysis.core;version="[6.1.0,7.0.0)",
+ org.apache.lucene.document;core=split;version="[6.1.0,7.0.0)",
+ org.apache.lucene.index;core=split;version="[6.1.0,7.0.0)",
+ org.apache.lucene.search;core=split;version="[6.1.0,7.0.0)",
+ org.apache.lucene.store;core=split;version="[6.1.0,7.0.0)",
+ org.apache.lucene.util;version="[6.1.0,7.0.0)"
Export-Package: org.eclipse.epp.internal.logging.aeri.ide;x-internal:=true,
org.eclipse.epp.internal.logging.aeri.ide.server;x-internal:=true,
org.eclipse.epp.internal.logging.aeri.ide.server.json;x-internal:=true,
diff --git a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/LocalReportsHistory.java b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/LocalReportsHistory.java
index ed1c6a8..0d86636 100644
--- a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/LocalReportsHistory.java
+++ b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/LocalReportsHistory.java
@@ -20,11 +20,12 @@
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
-import org.apache.lucene.analysis.KeywordAnalyzer;
+import org.apache.lucene.analysis.core.KeywordAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
-import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
+import org.apache.lucene.document.StoredField;
+import org.apache.lucene.document.StringField;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
@@ -38,10 +39,8 @@
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.util.IOUtils;
-import org.apache.lucene.util.Version;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.epp.internal.logging.aeri.ide.l10n.Messages;
-import org.eclipse.epp.logging.aeri.core.ISystemSettings;
import org.eclipse.epp.logging.aeri.core.SystemControl;
import org.eclipse.epp.logging.aeri.core.util.Statuses;
@@ -89,8 +88,9 @@
private boolean seen(String fingerprint) {
TermQuery query = new TermQuery(new Term(F_IDENTITY, fingerprint));
- IndexSearcher searcher = manager.acquire();
+ IndexSearcher searcher = null;
try {
+ searcher = manager.acquire();
TopDocs results = searcher.search(query, 1);
boolean foundIdenticalReport = results.totalHits > 0;
return foundIdenticalReport;
@@ -99,14 +99,17 @@
return false;
} finally {
try {
- manager.release(searcher);
+ if (searcher != null) {
+ manager.release(searcher);
+ searcher = null;
+ }
} catch (IOException e) {
log(WARN_HISTORY_NOT_AVAILABLE, e);
}
}
}
- public static String computeHistoryFingerprint(IStatus status) {
+ private static String computeHistoryFingerprint(IStatus status) {
IStatus relevant = Statuses.findRelevantStatus(status);
Throwable exception = checkNotNull(relevant.getException());
StackTraceElement[] normalizes = Statuses.normalize(exception);
@@ -128,7 +131,7 @@
return;
}
Document doc = new Document();
- Field field = new Field(F_IDENTITY, fingerprint, Store.NO, Index.NOT_ANALYZED);
+ Field field = new StringField(F_IDENTITY, fingerprint, Store.NO);
doc.add(field);
try {
writer.addDocument(doc);
@@ -144,7 +147,7 @@
private void reopen() {
try {
- manager.maybeReopen();
+ manager.maybeRefresh();
} catch (IOException e) {
log(WARN_HISTORY_NOT_AVAILABLE, e);
}
@@ -153,12 +156,12 @@
@VisibleForTesting
protected Directory createIndexDirectory() throws IOException {
stateLocation.mkdirs();
- index = FSDirectory.open(stateLocation);
+ index = FSDirectory.open(stateLocation.toPath());
return index;
}
private void createWriter() throws CorruptIndexException, LockObtainFailedException, IOException {
- IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_35, new KeywordAnalyzer());
+ IndexWriterConfig conf = new IndexWriterConfig(new KeywordAnalyzer());
conf.setOpenMode(OpenMode.CREATE_OR_APPEND);
writer = new IndexWriter(index, conf);
// to build an initial index if empty:
@@ -169,13 +172,13 @@
private void buildInitialIndex() throws CorruptIndexException, IOException {
Document meta = new Document();
- meta.add(new Field(F_VERSION, VERSION, Store.YES, Index.NO));
+ meta.add(new StoredField(F_VERSION, VERSION));
writer.addDocument(meta);
writer.commit();
}
private void createSearchManager() throws IOException {
- manager = new SearcherManager(index, null, null);
+ manager = new SearcherManager(index, null);
}
@PreDestroy
@@ -196,11 +199,9 @@
public static class LocalHistorySeenFilter implements Predicate<IStatus> {
private LocalReportsHistory history;
- private ISystemSettings systemSettings;
- public LocalHistorySeenFilter(LocalReportsHistory history, ISystemSettings systemSettings) {
+ public LocalHistorySeenFilter(LocalReportsHistory history) {
this.history = history;
- this.systemSettings = systemSettings;
}
@Override
diff --git a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/mars/ServerConnection.java b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/mars/ServerConnection.java
index c3e9a25..aac9fee 100644
--- a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/mars/ServerConnection.java
+++ b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/mars/ServerConnection.java
@@ -127,7 +127,7 @@
}
{
- File localHistoryStateLocation = new File(configurationArea, "local-history"); //$NON-NLS-1$
+ File localHistoryStateLocation = new File(configurationArea, "local-history.lucene60"); //$NON-NLS-1$
localHistoryStateLocation.mkdirs();
localHistory = new LocalReportsHistory(localHistoryStateLocation);
localHistory.startAsync();
@@ -135,7 +135,7 @@
{
if (io.getConfiguration().getInterestUrl() != null) {
- File cacheDir = new File(configurationArea, "http-cache");
+ File cacheDir = new File(configurationArea, "http-cache.lucene60");
cacheDir.mkdirs();
remoteHistories.add(createRestBasedProblemsHistory(cacheDir));
}
@@ -161,7 +161,7 @@
@SuppressWarnings("unchecked")
Predicate<? super IStatus>[] statusFilters = DecoratingDebugFilter.decorate(
// @formatter:off
- new LocalHistorySeenFilter(localHistory, systemSettings),
+ new LocalHistorySeenFilter(localHistory),
new AcceptedProductsFilter(configuration.getAcceptedProductsPatterns()),
new RequiredPackagesFilter(configuration.getRequiredPackagesPatterns()),
new AcceptedPluginsFilter(configuration.getAcceptedPluginsPatterns()),
diff --git a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/rest/LuceneHttpCacheStorage.java b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/rest/LuceneHttpCacheStorage.java
index cfa53fe..121c015 100644
--- a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/rest/LuceneHttpCacheStorage.java
+++ b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/rest/LuceneHttpCacheStorage.java
@@ -28,15 +28,15 @@
import org.apache.http.impl.client.cache.HeapResource;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicStatusLine;
-import org.apache.lucene.analysis.KeywordAnalyzer;
+import org.apache.lucene.analysis.core.KeywordAnalyzer;
import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
-import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
-import org.apache.lucene.document.Fieldable;
+import org.apache.lucene.document.StoredField;
+import org.apache.lucene.document.StringField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.index.IndexableField;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
@@ -45,7 +45,6 @@
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.Version;
class LuceneHttpCacheStorage implements HttpCacheStorage, Closeable {
@@ -67,15 +66,15 @@
private final SearcherManager searcherManager;
LuceneHttpCacheStorage(Directory directory) throws IOException {
- IndexWriterConfig writerConfig = new IndexWriterConfig(Version.LUCENE_35, new KeywordAnalyzer());
+ IndexWriterConfig writerConfig = new IndexWriterConfig(new KeywordAnalyzer());
writerConfig.setOpenMode(OpenMode.CREATE_OR_APPEND);
writer = new IndexWriter(directory, writerConfig);
- searcherManager = new SearcherManager(writer, true, null, null);
+ searcherManager = new SearcherManager(writer, true, false, null);
}
@Override
public HttpCacheEntry getEntry(String key) throws IOException {
- searcherManager.maybeReopen();
+ searcherManager.maybeRefresh();
IndexSearcher searcher = searcherManager.acquire();
try {
Query query = new TermQuery(new Term(KEY_FIELD_NAME, key));
@@ -131,50 +130,50 @@
private Document toLuceneDocument(String key, HttpCacheEntry entry) throws IOException {
Document document = new Document();
- document.add(new Field(KEY_FIELD_NAME, key, Store.NO, Index.NOT_ANALYZED_NO_NORMS));
- for (Fieldable field : toLuceneFields(entry)) {
+ document.add(new StringField(KEY_FIELD_NAME, key, Store.NO));
+ for (IndexableField field : toLuceneFields(entry)) {
document.add(field);
}
return document;
}
- private List<Fieldable> toLuceneFields(HttpCacheEntry entry) throws IOException {
- List<Fieldable> fields = new ArrayList<>();
+ private List<IndexableField> toLuceneFields(HttpCacheEntry entry) throws IOException {
+ List<IndexableField> fields = new ArrayList<>();
- fields.add(new Field(REQUEST_DATE_FIELD_NAME, Long.toString(entry.getRequestDate().getTime()), Store.YES, Index.NO));
+ fields.add(new StoredField(REQUEST_DATE_FIELD_NAME, Long.toString(entry.getRequestDate().getTime())));
- fields.add(new Field(RESPONSE_DATE_FIELD_NAME, Long.toString(entry.getResponseDate().getTime()), Store.YES, Index.NO));
+ fields.add(new StoredField(RESPONSE_DATE_FIELD_NAME, Long.toString(entry.getResponseDate().getTime())));
StatusLine statusLine = entry.getStatusLine();
- fields.add(new Field(STATUS_CODE_FIELD_NAME, Integer.toString(statusLine.getStatusCode()), Store.YES, Index.NO));
- fields.add(new Field(REASON_PHRASE_FIELD_NAME, statusLine.getReasonPhrase(), Store.YES, Index.NO));
+ fields.add(new StoredField(STATUS_CODE_FIELD_NAME, Integer.toString(statusLine.getStatusCode())));
+ fields.add(new StoredField(REASON_PHRASE_FIELD_NAME, statusLine.getReasonPhrase()));
ProtocolVersion protocolVersion = statusLine.getProtocolVersion();
- fields.add(new Field(PROTOCOL_FIELD_NAME, protocolVersion.getProtocol(), Store.YES, Index.NO));
- fields.add(new Field(MAJOR_PROTOCAL_VERSION_FIELD_NAME, Integer.toString(protocolVersion.getMajor()), Store.YES, Index.NO));
- fields.add(new Field(MINOR_PROTOCOL_VERSION_FIELD_NAME, Integer.toString(protocolVersion.getMinor()), Store.YES, Index.NO));
+ fields.add(new StoredField(PROTOCOL_FIELD_NAME, protocolVersion.getProtocol()));
+ fields.add(new StoredField(MAJOR_PROTOCAL_VERSION_FIELD_NAME, Integer.toString(protocolVersion.getMajor())));
+ fields.add(new StoredField(MINOR_PROTOCOL_VERSION_FIELD_NAME, Integer.toString(protocolVersion.getMinor())));
Header[] headers = entry.getAllHeaders();
for (int index = 0; index < headers.length; index++) {
Header header = headers[index];
- fields.add(new Field(HEADER_FIELD_NAMES + '/' + index + '/' + header.getName(), header.getValue(), Store.YES, Index.NO));
+ fields.add(new StoredField(HEADER_FIELD_NAMES + '/' + index + '/' + header.getName(), header.getValue()));
}
Resource body = entry.getResource();
if (body != null) {
- fields.add(new Field(BODY_FIELD_NAME, IOUtils.toByteArray(body.getInputStream())));
+ fields.add(new StoredField(BODY_FIELD_NAME, IOUtils.toByteArray(body.getInputStream())));
}
if (entry.hasVariants()) {
for (Entry<String, String> variant : entry.getVariantMap().entrySet()) {
- fields.add(new Field(VARIANT_FIELD_NAMES + '/' + variant.getKey(), variant.getValue(), Store.YES, Index.NO));
+ fields.add(new StoredField(VARIANT_FIELD_NAMES + '/' + variant.getKey(), variant.getValue()));
}
}
return fields;
}
- private HttpCacheEntry fromLuceneFields(List<Fieldable> fields) throws IOException {
+ private HttpCacheEntry fromLuceneFields(List<IndexableField> fields) throws IOException {
Date requestDate = null;
Date responseDate = null;
int statusCode = Integer.MIN_VALUE;
@@ -186,7 +185,7 @@
Resource body = null;
Map<String, String> variantMap = new HashMap<>();
- for (Fieldable field : fields) {
+ for (IndexableField field : fields) {
String fieldName = field.name();
if (REQUEST_DATE_FIELD_NAME.equals(fieldName)) {
requestDate = parseDateField(field);
@@ -215,7 +214,7 @@
throw new IOException(e);
}
} else if (BODY_FIELD_NAME.equals(fieldName)) {
- body = new HeapResource(field.getBinaryValue());
+ body = new HeapResource(field.binaryValue().bytes);
} else if (fieldName.startsWith(VARIANT_FIELD_NAMES)) {
String variantKey = fieldName.substring(VARIANT_FIELD_NAMES_LENGTH + 1);
String cacheKey = field.stringValue();
@@ -235,7 +234,7 @@
}
}
- private Date parseDateField(Fieldable field) throws IOException {
+ private Date parseDateField(IndexableField field) throws IOException {
try {
String stringValue = field.stringValue();
long longValue = Long.parseLong(stringValue);
@@ -245,7 +244,7 @@
}
}
- private int parseIntField(Fieldable field) throws IOException {
+ private int parseIntField(IndexableField field) throws IOException {
try {
String stringValue = field.stringValue();
return Integer.parseInt(stringValue);
diff --git a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/rest/RestBasedProblemsHistory.java b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/rest/RestBasedProblemsHistory.java
index 7c3cc07..4b564bb 100644
--- a/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/rest/RestBasedProblemsHistory.java
+++ b/bundles/org.eclipse.epp.logging.aeri.ide/src/org/eclipse/epp/internal/logging/aeri/ide/server/rest/RestBasedProblemsHistory.java
@@ -79,7 +79,7 @@
throw new IllegalArgumentException(e);
}
- Directory directory = FSDirectory.open(cacheDir);
+ Directory directory = FSDirectory.open(cacheDir.toPath());
storage = new LuceneHttpCacheStorage(directory);
client = createClient(storage);
executor = Executor.newInstance(client);
diff --git a/features/org.eclipse.epp.logging.3rd.feature/feature.xml b/features/org.eclipse.epp.logging.3rd.feature/feature.xml
index ec0fef6..5e818b6 100644
--- a/features/org.eclipse.epp.logging.3rd.feature/feature.xml
+++ b/features/org.eclipse.epp.logging.3rd.feature/feature.xml
@@ -108,7 +108,14 @@
id="org.apache.lucene.core"
download-size="0"
install-size="0"
- version="3.5.0.v20120725-1805"
+ version="6.1.0.v20161115-1612"
+ unpack="false"/>
+
+ <plugin
+ id="org.apache.lucene.analyzers-common"
+ download-size="0"
+ install-size="0"
+ version="6.1.0.v20161115-1612"
unpack="false"/>
<plugin
diff --git a/releng/targets/neon/neon.target b/releng/targets/neon/neon.target
index 2f29043..7fba6df 100644
--- a/releng/targets/neon/neon.target
+++ b/releng/targets/neon/neon.target
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="Target Definition for Eclipse Neon (4.6)" sequenceNumber="6">
+<?pde version="3.8"?><target name="Target Definition for Eclipse Neon (4.6)" sequenceNumber="7">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.ecf.core.feature.feature.group" version="0.0.0"/>
@@ -25,7 +25,10 @@
<unit id="org.apache.commons.lang3" version="3.1.0.v201403281430"/>
<unit id="org.apache.httpcomponents.httpclient" version="4.3.6.v201511171540"/>
<unit id="org.apache.httpcomponents.httpcore" version="4.3.3.v201411290715"/>
-<unit id="org.apache.lucene.core" version="3.5.0.v20120725-1805"/>
+<!-- https://dev.eclipse.org/ipzilla/show_bug.cgi?id=13092 -->
+<unit id="org.apache.lucene.analyzers-common" version="6.1.0.v20161115-1612"/>
+<!-- https://dev.eclipse.org/ipzilla/show_bug.cgi?id=13091 -->
+<unit id="org.apache.lucene.core" version="6.1.0.v20161115-1612"/>
<unit id="org.hamcrest" version="1.1.0.v20090501071000"/>
<unit id="org.hamcrest.integration" version="1.3.0.v201305210900"/>
<unit id="org.hamcrest.library" version="1.3.0.v201505072020"/>
diff --git a/tests/org.eclipse.epp.logging.aeri.ide.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.epp.logging.aeri.ide.tests/META-INF/MANIFEST.MF
index ca3161c..320821b 100644
--- a/tests/org.eclipse.epp.logging.aeri.ide.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.epp.logging.aeri.ide.tests/META-INF/MANIFEST.MF
@@ -11,21 +11,7 @@
org.hamcrest.core;bundle-version="1.3.0",
org.junit;bundle-version="4.11.0",
org.mockito;bundle-version="1.9.5",
- org.eclipse.e4.ui.workbench,
- org.eclipse.e4.core.di,
- org.eclipse.e4.ui.model.workbench,
- org.eclipse.osgi.services,
org.objenesis,
- org.eclipse.equinox.p2.core,
- org.apache.commons.logging,
- org.eclipse.equinox.event,
org.eclipse.jdt.annotation;bundle-version="[1.1.0,2.0.0)",
- org.eclipse.ui,
- org.apache.httpcomponents.httpclient;bundle-version="4.3.6",
- org.apache.httpcomponents.httpcore;bundle-version="4.3.3",
- com.google.gson;bundle-version="2.2.4",
- org.apache.lucene.core;bundle-version="3.5.0",
- org.eclipse.epp.logging.aeri.tests,
- org.eclipse.e4.core.contexts
-Import-Package: org.apache.commons.lang3.builder,
- org.apache.commons.lang3.text;version="3.1.0"
+ org.eclipse.epp.logging.aeri.tests
+Import-Package: org.apache.commons.lang3.builder
diff --git a/tests/org.eclipse.epp.logging.aeri.ide.tests/src/org/eclipse/epp/internal/logging/aeri/ide/server/mars/LocalReportsHistoryTest.java b/tests/org.eclipse.epp.logging.aeri.ide.tests/src/org/eclipse/epp/internal/logging/aeri/ide/server/mars/LocalReportsHistoryTest.java
index 8a9ce22..f5b07bf 100644
--- a/tests/org.eclipse.epp.logging.aeri.ide.tests/src/org/eclipse/epp/internal/logging/aeri/ide/server/mars/LocalReportsHistoryTest.java
+++ b/tests/org.eclipse.epp.logging.aeri.ide.tests/src/org/eclipse/epp/internal/logging/aeri/ide/server/mars/LocalReportsHistoryTest.java
@@ -27,7 +27,7 @@
public void setup() {
history = createTestHistory();
settings = IModelFactory.eINSTANCE.createSystemSettings();
- sut = new LocalHistorySeenFilter(history, settings);
+ sut = new LocalHistorySeenFilter(history);
status = new TestStatus();
status.setException(new RuntimeException().fillInStackTrace());
}