You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by th...@apache.org on 2024/08/14 12:32:51 UTC

(jackrabbit-oak) 01/01: OAK-11025 Silence more warnings for ordered properties

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

thomasm pushed a commit to branch OAK-11025
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit 9e3beff2de7419d7b193308645ec845dc33f9c5d
Author: Thomas Mueller <th...@apache.org>
AuthorDate: Wed Aug 14 14:32:21 2024 +0200

    OAK-11025 Silence more warnings for ordered properties
---
 .../plugins/index/lucene/LuceneDocumentMaker.java  | 42 +++++++++++++++++-----
 1 file changed, 33 insertions(+), 9 deletions(-)

diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneDocumentMaker.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneDocumentMaker.java
index 2be705154e..0be7e419b2 100644
--- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneDocumentMaker.java
+++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneDocumentMaker.java
@@ -61,13 +61,13 @@ public class LuceneDocumentMaker extends FulltextDocumentMaker<Document> {
     private static final String DYNAMIC_BOOST_SPLIT_REGEX = "[:/]";
     
     // warn once every 10 seconds at most
-    private static final long DUPLICATE_WARNING_INTERVAL_MS = 10 * 1000;
+    private static final long ORDERED_PROPERTY_WARNING_INTERVAL_MS = 10 * 1000;
 
     private final FacetsConfigProvider facetsConfigProvider;
     private final IndexAugmentorFactory augmentorFactory;
     
     // when did we warn (static, as we construct new objects quite often)
-    private static long lastDuplicateWarning;
+    private static long lastOrderedPropertyWarning;
 
     public LuceneDocumentMaker(IndexDefinition definition,
                                IndexDefinition.IndexingRule indexingRule,
@@ -300,18 +300,42 @@ public class LuceneDocumentMaker extends FulltextDocumentMaker<Document> {
                     fieldAdded = true;
                 } else {
                     long now = System.currentTimeMillis();
-                    if (now > lastDuplicateWarning + DUPLICATE_WARNING_INTERVAL_MS) {
+                    if (now > lastOrderedPropertyWarning + ORDERED_PROPERTY_WARNING_INTERVAL_MS) {
                         log.warn("Duplicate value for ordered field {}; ignoring. Possibly duplicate index definition.", f.name());
-                        lastDuplicateWarning = now;
+                        lastOrderedPropertyWarning = now;
                     }
                 }
             }
         } catch (Exception e) {
-            log.warn(
-                    "[{}] Ignoring ordered property. Could not convert property {} of type {} to type {} for path {}",
-                    getIndexName(), pname,
-                    Type.fromTag(property.getType().tag(), false),
-                    Type.fromTag(tag, false), path, e);
+            boolean unknownWarning = true;
+            String message = e.getMessage();
+            if (message.startsWith("Not a date string") ||
+                    message.startsWith("Unable to parse the provided date field") ||
+                    message.startsWith("For input string")) {
+                // This is a known warning, one of:
+                // - IllegalArgumentException: Not a date string
+                // - RuntimeException: Unable to parse the provided date field
+                // - NumberFormatException: For input string
+                // For these we do not log a stack trace, and we only log once every 10 seconds
+                // (the location of the code can be found if needed, as it's in Oak)
+                unknownWarning = false;
+                long now = System.currentTimeMillis();
+                if (now > lastOrderedPropertyWarning + ORDERED_PROPERTY_WARNING_INTERVAL_MS) {
+                    log.warn(
+                            "[{}] Ignoring ordered property. Could not convert property {} of type {} to type {} for path {}, message {}",
+                            getIndexName(), pname,
+                            Type.fromTag(property.getType().tag(), false),
+                            Type.fromTag(tag, false), path, e.getMessage());
+                    lastOrderedPropertyWarning = now;
+                }
+            }
+            if (unknownWarning) {
+                log.warn(
+                        "[{}] Ignoring ordered property. Could not convert property {} of type {} to type {} for path {}",
+                        getIndexName(), pname,
+                        Type.fromTag(property.getType().tag(), false),
+                        Type.fromTag(tag, false), path, e);
+            }
         }
         return fieldAdded;
     }