You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by la...@apache.org on 2017/11/07 00:47:01 UTC

[geode] branch develop updated: GEODE-3953: Incorrect use of .equals() for comparison of fieldname arrays GEODE-3954: Misleading Exception message with mismatched fieldAnalyzers

This is an automated email from the ASF dual-hosted git repository.

ladyvader pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new 01dc11f  GEODE-3953: Incorrect use of .equals() for comparison of fieldname arrays GEODE-3954: Misleading Exception message with mismatched fieldAnalyzers
01dc11f is described below

commit 01dc11fc51bdaacefccf66f7d7d449a40a6e6a45
Author: Lynn Hughes-Godfrey <lh...@pivotal.io>
AuthorDate: Fri Nov 3 14:59:55 2017 -0700

    GEODE-3953: Incorrect use of .equals() for comparison of fieldname arrays
    GEODE-3954: Misleading Exception message with mismatched fieldAnalyzers
    
    - corrected equals comparisons of fieldname arrays
    - corrected Exception message for mismatched fieldAnalyzers to refer to field analyzers (vs. fieldnames) when remote and local fieldAnalyzers are different sizes
    - corrected Exception message to display fieldAnalyzers vs. fieldnames when remote and local fieldAnalyzer maps are different sizes
---
 .../geode/cache/lucene/internal/LuceneIndexCreationProfile.java  | 9 +++++----
 .../lucene/internal/LuceneIndexCreationProfileJUnitTest.java     | 7 +++++++
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfile.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfile.java
index d022ba1..9a61048 100644
--- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfile.java
+++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfile.java
@@ -104,7 +104,8 @@ public class LuceneIndexCreationProfile implements CacheServiceProfile, Versione
     LuceneIndexCreationProfile remoteProfile = (LuceneIndexCreationProfile) profile;
 
     // Verify fields are the same
-    if (!Arrays.equals(remoteProfile.getFieldNames(), getFieldNames())) {
+    if ((getFieldNames().length != remoteProfile.getFieldNames().length) || (!Arrays
+        .asList(getFieldNames()).containsAll(Arrays.asList(remoteProfile.getFieldNames())))) {
       return LocalizedStrings.LuceneService_CANNOT_CREATE_INDEX_0_ON_REGION_1_WITH_FIELDS_2_BECAUSE_ANOTHER_MEMBER_DEFINES_THE_SAME_INDEX_WITH_FIELDS_3
           .toString(getIndexName(), regionPath, Arrays.toString(getFieldNames()),
               Arrays.toString(remoteProfile.getFieldNames()));
@@ -129,10 +130,10 @@ public class LuceneIndexCreationProfile implements CacheServiceProfile, Versione
     // since its a transient object.
     if (!getFieldAnalyzers().equals(remoteProfile.getFieldAnalyzers())) {
       if (getFieldAnalyzers().size() != remoteProfile.getFieldAnalyzers().size()) {
-        return LocalizedStrings.LuceneService_CANNOT_CREATE_INDEX_0_ON_REGION_1_WITH_FIELDS_2_BECAUSE_ANOTHER_MEMBER_DEFINES_THE_SAME_INDEX_WITH_FIELDS_3
+        return LocalizedStrings.LuceneService_CANNOT_CREATE_INDEX_0_ON_REGION_1_WITH_FIELD_ANALYZERS_2_BECAUSE_ANOTHER_MEMBER_DEFINES_THE_SAME_INDEX_WITH_FIELD_ANALYZERS_3
             .toString(getIndexName(), regionPath,
-                Arrays.toString(getFieldAnalyzers().keySet().toArray()),
-                Arrays.toString(remoteProfile.getFieldAnalyzers().keySet().toArray()));
+                Arrays.toString(getFieldAnalyzers().values().toArray()),
+                Arrays.toString(remoteProfile.getFieldAnalyzers().values().toArray()));
       }
       // now the 2 maps should have the same size
       for (String field : getFieldAnalyzers().keySet()) {
diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfileJUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfileJUnitTest.java
index da14499..28da116 100644
--- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfileJUnitTest.java
+++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneIndexCreationProfileJUnitTest.java
@@ -111,6 +111,8 @@ public class LuceneIndexCreationProfileJUnitTest {
     return $(
         new Object[] {getOneFieldLuceneIndexCreationProfile(),
             getTwoFieldLuceneIndexCreationProfile(), CANNOT_CREATE_LUCENE_INDEX_DIFFERENT_FIELDS},
+        new Object[] {getTwoFieldLuceneIndexCreationProfile(),
+            getReverseFieldsLuceneIndexCreationProfile(), null},
         new Object[] {getTwoAnalyzersLuceneIndexCreationProfile(),
             getOneAnalyzerLuceneIndexCreationProfile(new KeywordAnalyzer()),
             CANNOT_CREATE_LUCENE_INDEX_DIFFERENT_ANALYZERS},
@@ -142,6 +144,11 @@ public class LuceneIndexCreationProfileJUnitTest {
         new String[] {"field1", "field2"}, new StandardAnalyzer(), null, null);
   }
 
+  private LuceneIndexCreationProfile getReverseFieldsLuceneIndexCreationProfile() {
+    return new LuceneIndexCreationProfile(INDEX_NAME, REGION_NAME,
+        new String[] {"field2", "field1"}, new StandardAnalyzer(), null, null);
+  }
+
   private LuceneIndexCreationProfile getOneAnalyzerLuceneIndexCreationProfile(Analyzer analyzer) {
     Map<String, Analyzer> fieldAnalyzers = new HashMap<>();
     fieldAnalyzers.put("field1", analyzer);

-- 
To stop receiving notification emails like this one, please contact
['"commits@geode.apache.org" <co...@geode.apache.org>'].