From 3a88b404f16944d976255d2274a02ebb78d0c465 Mon Sep 17 00:00:00 2001 From: Jack Conradson Date: Tue, 15 Jan 2019 09:01:26 -0800 Subject: [PATCH 1/3] Deprecate _type from LeafDocLookup --- .../elasticsearch/search/lookup/LeafDocLookup.java | 11 +++++++++++ .../search/lookup/LeafDocLookupTests.java | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/server/src/main/java/org/elasticsearch/search/lookup/LeafDocLookup.java b/server/src/main/java/org/elasticsearch/search/lookup/LeafDocLookup.java index 4beb2507d7f25..e01e2a814394c 100644 --- a/server/src/main/java/org/elasticsearch/search/lookup/LeafDocLookup.java +++ b/server/src/main/java/org/elasticsearch/search/lookup/LeafDocLookup.java @@ -18,9 +18,11 @@ */ package org.elasticsearch.search.lookup; +import org.apache.logging.log4j.LogManager; import org.apache.lucene.index.LeafReaderContext; import org.elasticsearch.ExceptionsHelper; import org.elasticsearch.common.Nullable; +import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.ScriptDocValues; import org.elasticsearch.index.mapper.MappedFieldType; @@ -38,6 +40,11 @@ public class LeafDocLookup implements Map> { + private static final DeprecationLogger DEPRECATION_LOGGER + = new DeprecationLogger(LogManager.getLogger(LeafDocLookup.class)); + static final String TYPES_DEPRECATION_MESSAGE = + "[types removal] Looking up doc types in scripts is deprecated."; + private final Map> localCacheFieldData = new HashMap<>(4); private final MapperService mapperService; @@ -72,6 +79,10 @@ public void setDocument(int docId) { @Override public ScriptDocValues get(Object key) { + // deprecate _type + if ("_type".equals(key)) { + DEPRECATION_LOGGER.deprecated(TYPES_DEPRECATION_MESSAGE); + } // assume its a string... String fieldName = key.toString(); ScriptDocValues scriptValues = localCacheFieldData.get(fieldName); diff --git a/server/src/test/java/org/elasticsearch/search/lookup/LeafDocLookupTests.java b/server/src/test/java/org/elasticsearch/search/lookup/LeafDocLookupTests.java index dfdbef1c3d539..c9734972d0c4b 100644 --- a/server/src/test/java/org/elasticsearch/search/lookup/LeafDocLookupTests.java +++ b/server/src/test/java/org/elasticsearch/search/lookup/LeafDocLookupTests.java @@ -45,6 +45,7 @@ public void setUp() throws Exception { when(fieldType.valueForDisplay(anyObject())).then(returnsFirstArg()); MapperService mapperService = mock(MapperService.class); + when(mapperService.fullName("_type")).thenReturn(fieldType); when(mapperService.fullName("field")).thenReturn(fieldType); when(mapperService.fullName("alias")).thenReturn(fieldType); @@ -72,4 +73,10 @@ public void testLookupWithFieldAlias() { ScriptDocValues fetchedDocValues = docLookup.get("alias"); assertEquals(docValues, fetchedDocValues); } + + public void testTypesDeprecation() { + ScriptDocValues fetchedDocValues = docLookup.get("_type"); + assertEquals(docValues, fetchedDocValues); + assertWarnings("[types removal] Looking up doc types in scripts is deprecated."); + } } From 5ee2158e3699340b80be46d73a3acc41a4de4447 Mon Sep 17 00:00:00 2001 From: Jack Conradson Date: Tue, 15 Jan 2019 09:40:39 -0800 Subject: [PATCH 2/3] Response to PR comments. --- .../java/org/elasticsearch/search/lookup/LeafDocLookup.java | 2 +- .../org/elasticsearch/search/lookup/LeafDocLookupTests.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/search/lookup/LeafDocLookup.java b/server/src/main/java/org/elasticsearch/search/lookup/LeafDocLookup.java index e01e2a814394c..47565fc2da7d3 100644 --- a/server/src/main/java/org/elasticsearch/search/lookup/LeafDocLookup.java +++ b/server/src/main/java/org/elasticsearch/search/lookup/LeafDocLookup.java @@ -81,7 +81,7 @@ public void setDocument(int docId) { public ScriptDocValues get(Object key) { // deprecate _type if ("_type".equals(key)) { - DEPRECATION_LOGGER.deprecated(TYPES_DEPRECATION_MESSAGE); + DEPRECATION_LOGGER.deprecatedAndMaybeLog(TYPES_DEPRECATION_MESSAGE, TYPES_DEPRECATION_MESSAGE); } // assume its a string... String fieldName = key.toString(); diff --git a/server/src/test/java/org/elasticsearch/search/lookup/LeafDocLookupTests.java b/server/src/test/java/org/elasticsearch/search/lookup/LeafDocLookupTests.java index c9734972d0c4b..fca61bf2564b9 100644 --- a/server/src/test/java/org/elasticsearch/search/lookup/LeafDocLookupTests.java +++ b/server/src/test/java/org/elasticsearch/search/lookup/LeafDocLookupTests.java @@ -26,6 +26,7 @@ import org.elasticsearch.test.ESTestCase; import org.junit.Before; +import static org.elasticsearch.search.lookup.LeafDocLookup.TYPES_DEPRECATION_MESSAGE; import static org.mockito.AdditionalAnswers.returnsFirstArg; import static org.mockito.Matchers.anyObject; import static org.mockito.Mockito.doReturn; @@ -77,6 +78,6 @@ public void testLookupWithFieldAlias() { public void testTypesDeprecation() { ScriptDocValues fetchedDocValues = docLookup.get("_type"); assertEquals(docValues, fetchedDocValues); - assertWarnings("[types removal] Looking up doc types in scripts is deprecated."); + assertWarnings(TYPES_DEPRECATION_MESSAGE); } } From 3b2f67ba315fb575b0969a277cdd3ecb1680a2c1 Mon Sep 17 00:00:00 2001 From: Jack Conradson Date: Tue, 15 Jan 2019 15:07:25 -0800 Subject: [PATCH 3/3] Response to PR comments. --- .../java/org/elasticsearch/search/lookup/LeafDocLookup.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/org/elasticsearch/search/lookup/LeafDocLookup.java b/server/src/main/java/org/elasticsearch/search/lookup/LeafDocLookup.java index 47565fc2da7d3..17518b2f1f60f 100644 --- a/server/src/main/java/org/elasticsearch/search/lookup/LeafDocLookup.java +++ b/server/src/main/java/org/elasticsearch/search/lookup/LeafDocLookup.java @@ -42,6 +42,7 @@ public class LeafDocLookup implements Map> { private static final DeprecationLogger DEPRECATION_LOGGER = new DeprecationLogger(LogManager.getLogger(LeafDocLookup.class)); + static final String TYPES_DEPRECATION_KEY = "type-field-doc-lookup"; static final String TYPES_DEPRECATION_MESSAGE = "[types removal] Looking up doc types in scripts is deprecated."; @@ -81,7 +82,7 @@ public void setDocument(int docId) { public ScriptDocValues get(Object key) { // deprecate _type if ("_type".equals(key)) { - DEPRECATION_LOGGER.deprecatedAndMaybeLog(TYPES_DEPRECATION_MESSAGE, TYPES_DEPRECATION_MESSAGE); + DEPRECATION_LOGGER.deprecatedAndMaybeLog(TYPES_DEPRECATION_KEY, TYPES_DEPRECATION_MESSAGE); } // assume its a string... String fieldName = key.toString();