Skip to content

Pipeline list and execution list views refresh very inefficient and slow #544

@eea03

Description

@eea03

During testing on our development environment, we have discovered that refreshing of pipelines and executions lists views is very inefficient. There are several reasons for this:

  1. changed pipelines / executions test in database is no table entries specific - it checks in database if some pipeline / execution has been changed since last refresh but regardless if should or should not be seen in table
  2. When change / delete is detected, ItemSetChangeEvent is generated so all the entries in the table are refreshed.
  3. refresh of containter generates tons of selects - it gets the pipelines and executions individually by getPipeline() and getExecution() service methods. Even worse, the counts of selects cannot be reasonably calculated. E.g. for 60 pipelines, refresh generated 266 selects. This was constant for each refresh while count of pipelines remained the same. When pipeline count increased, so did the count of selects. For executions, the count of selects is significantly lower even when there are more executions, but still quite high (100 selects for 120 executions). And the count of selects clearly depends also on page size of table. Mentioned values were with 20 page size, when i decreased to 10, also count of selects decreased to half

On environments with large amount of data, especially when database is on other server, as we already have seen on our test environment.

From what I read, I think there are 2 possible ways of fixing this:

  • use ValueChangeEvents instead of ItemSetChangeEvent - this way only really changed items would have been polled from db and refreshed in view. Disadvantage of this is that refresher would have to identify all changes in db and create change events from them
  • use service class to poll table entries in one select - removing the large number of rubish selects

Good start is to read:

This is quite a complex problem and requires further deep examination

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions