Github user markap14 commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/2343#discussion_r157232403
  
    --- Diff: 
nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/RouteText.java
 ---
    @@ -209,6 +215,30 @@
         private volatile Map<Relationship, PropertyValue> propertyMap = new 
HashMap<>();
         private volatile Pattern groupingRegex = null;
     
    +    @VisibleForTesting
    +    final static int PATTERNS_CACHE_MAXIMUM_ENTRIES = 10;
    +
    +    /**
    +     * LRU cache for the compiled patterns. The size of the cache is 
determined by the value of
    +     * {@link #PATTERNS_CACHE_MAXIMUM_ENTRIES}.
    +     */
    +    @VisibleForTesting
    +    final ConcurrentMap<Pair<Boolean, String>, Pattern> patternsCache = 
CacheBuilder.newBuilder()
    +            .maximumSize(PATTERNS_CACHE_MAXIMUM_ENTRIES)
    +            .<Pair<Boolean, String>, Pattern>build()
    +            .asMap();
    +
    +    private final Function<Pair<Boolean, String>, Pattern> compileRegex = 
ignoreCaseAndRegex -> {
    --- End diff --
    
    Again, I would avoid the use of the Pair<Boolean, String> here... and 
really would probably avoid the Function all together. Since it seems to be 
referenced only once, I'd prefer to instead just inline the use in the 
cacheCompiledPattern method, so that there we could just call something like:
    
    `return patternsCache.computeIfAbsent(key, toCompile -> ignoreCase ? 
Pattern.compile(toCompile, Pattern.CASE_INSENSITIVE) : 
Pattern.compile(toCompile));`


---

Reply via email to