Skip to content

Very slow contains filter from web UI #5700

@devinrsmith

Description

@devinrsmith

When executing a "contains" on a String column in via the web UI, a pattern is compiled for every single comparison.

Ideally, this would instead use a io.deephaven.api.filter.FilterPattern / io.deephaven.engine.table.impl.select.WhereFilterPatternImpl.

"DeephavenApiServer-Scheduler-Concurrent-4" #46 [98] daemon prio=5 os_prio=0 cpu=216984.86ms elapsed=1072.72s tid=0x00007ad5bc001280 nid=98 runnable  [0x00007ad5c5afc000]           
   java.lang.Thread.State: RUNNABLE                                                                                                                                                  
        at java.util.regex.Pattern$CharPropertyGreedy.match(java.base@21.0.3/Pattern.java:4470)                                                                                      
        at java.util.regex.Matcher.match(java.base@21.0.3/Matcher.java:1794)                                                                                                         
        at java.util.regex.Matcher.matches(java.base@21.0.3/Matcher.java:754)                                                                                                        
        at java.util.regex.Pattern.matches(java.base@21.0.3/Pattern.java:1222)                                                                                                       
        at java.lang.String.matches(java.base@21.0.3/String.java:2969)                                                                                                               
        at io.deephaven.temp.c_631d8105a9581f7d820d880f95bc47c7d61844cc964870537972019e52f008bcv65_0.GeneratedFilterKernel.filter(GeneratedFilterKernel.java:91)                     
        at io.deephaven.engine.table.impl.select.ConditionFilter$ChunkFilter.filter(ConditionFilter.java:363)                                                                        
        at io.deephaven.engine.table.impl.select.AbstractConditionFilter.filter(AbstractConditionFilter.java:262)                                                                    
        at io.deephaven.engine.table.impl.select.WhereFilter.filter(WhereFilter.java:236)                                                                                            
        at io.deephaven.engine.table.impl.select.ConjunctiveFilter.andImpl(ConjunctiveFilter.java:56)                                                                                
        at io.deephaven.engine.table.impl.select.ConjunctiveFilter.filter(ConjunctiveFilter.java:66)                                                                                 
        at io.deephaven.engine.table.impl.AbstractFilterExecution.doFilter(AbstractFilterExecution.java:132)                                                                         
        at io.deephaven.engine.table.impl.AbstractFilterExecution.lambda$scheduleCompletion$4(AbstractFilterExecution.java:286)                                                      
        at io.deephaven.engine.table.impl.AbstractFilterExecution$$Lambda/0x00007ad66ca543e0.run(Unknown Source)                                                                     
        at io.deephaven.engine.table.impl.util.JobScheduler$IterationManager$TaskInvoker.execute(JobScheduler.java:258)                                                              
        - locked <0x000000062d11dc88> (a io.deephaven.engine.table.impl.util.JobScheduler$IterationManager$TaskInvoker)                                                              
        at io.deephaven.engine.table.impl.util.JobScheduler$IterationManager.lambda$startTasks$0(JobScheduler.java:164)                                                              
        at io.deephaven.engine.table.impl.util.JobScheduler$IterationManager$$Lambda/0x00007ad66c7c1638.run(Unknown Source)                                                          
        at io.deephaven.engine.table.impl.util.ImmediateJobScheduler.lambda$submit$0(ImmediateJobScheduler.java:40)                                                                  
        at io.deephaven.engine.table.impl.util.ImmediateJobScheduler$$Lambda/0x00007ad66c7c1a80.run(Unknown Source)                                                                  
        at io.deephaven.engine.table.impl.util.ImmediateJobScheduler.submit(ImmediateJobScheduler.java:54)                                                                           
        at io.deephaven.engine.table.impl.util.JobScheduler$IterationManager.startTasks(JobScheduler.java:164)                                                                       
        at io.deephaven.engine.table.impl.util.JobScheduler.iterateSerial(JobScheduler.java:431)                                                                                     
        at io.deephaven.engine.table.impl.AbstractFilterExecution.scheduleCompletion(AbstractFilterExecution.java:260)                                                               
        at io.deephaven.engine.table.impl.QueryTable.lambda$whereInternal$27(QueryTable.java:1300)                                                                                   
        at io.deephaven.engine.table.impl.QueryTable$$Lambda/0x00007ad66ca515f0.call(Unknown Source)                                                                                 
        at io.deephaven.engine.table.impl.BaseTable.initializeWithSnapshot(BaseTable.java:1293)                                                                                      
        at io.deephaven.engine.table.impl.QueryTable.lambda$whereInternal$28(QueryTable.java:1290)                                                                                   
        at io.deephaven.engine.table.impl.QueryTable$$Lambda/0x00007ad66ca4ebe0.get(Unknown Source)                                                                                  
        at io.deephaven.engine.table.impl.QueryTable.memoizeResult(QueryTable.java:3639)                                                                                             
        at io.deephaven.engine.table.impl.QueryTable.lambda$whereInternal$29(QueryTable.java:1269)                                                                                   
        at io.deephaven.engine.table.impl.QueryTable$$Lambda/0x00007ad66ca4a1e8.get(Unknown Source)                                                                                  
        at io.deephaven.engine.table.impl.perf.QueryPerformanceRecorder.withNugget(QueryPerformanceRecorder.java:369)                                                                
        at io.deephaven.engine.table.impl.QueryTable.whereInternal(QueryTable.java:1223)                                                                                             
        at io.deephaven.engine.table.impl.QueryTable.where(QueryTable.java:1162)                                                                                                     
        at io.deephaven.engine.table.impl.QueryTable.where(QueryTable.java:100)                                                                                                      
        at io.deephaven.engine.table.impl.UncoalescedTable.where(UncoalescedTable.java:209)                                                                                          
        at io.deephaven.engine.table.impl.UncoalescedTable.where(UncoalescedTable.java:43)                                                                                           
        at io.deephaven.server.table.ops.FilterTableGrpcImpl.create(FilterTableGrpcImpl.java:57)                                                                                     
        at io.deephaven.server.table.ops.FilterTableGrpcImpl.create(FilterTableGrpcImpl.java:30)                                                                                     
        at io.deephaven.server.table.ops.TableServiceGrpcImpl$BatchExportBuilder.doExport(TableServiceGrpcImpl.java:757)                                                             
        at io.deephaven.server.table.ops.TableServiceGrpcImpl$$Lambda/0x00007ad66c92c648.call(Unknown Source)                                                                        
        at io.deephaven.server.session.SessionState$ExportObject.doExport(SessionState.java:995)                                                                                     
        at io.deephaven.server.session.SessionState$ExportObject$$Lambda/0x00007ad66c61ca20.run(Unknown Source)                                                                      
        at java.util.concurrent.Executors$RunnableAdapter.call(java.base@21.0.3/Executors.java:572)                                                                                  
        at java.util.concurrent.FutureTask.run(java.base@21.0.3/FutureTask.java:317)                                                                                                 
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(java.base@21.0.3/ScheduledThreadPoolExecutor.java:304)                                           
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@21.0.3/ThreadPoolExecutor.java:1144)                                                                          
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@21.0.3/ThreadPoolExecutor.java:642)                                                                          
        at io.deephaven.server.runner.scheduler.SchedulerModule$ThreadFactory.lambda$newThread$0(SchedulerModule.java:100)                                                           
        at io.deephaven.server.runner.scheduler.SchedulerModule$ThreadFactory$$Lambda/0x00007ad66c498800.run(Unknown Source)                                                         
        at java.lang.Thread.runWith(java.base@21.0.3/Thread.java:1596)                                                                                                               
        at java.lang.Thread.run(java.base@21.0.3/Thread.java:1583)

Potentially related to #3784, #3425

Metadata

Metadata

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions