Dev/mip 17/parallel processing node tasks
Created by: KFilippopolitis
Changelog:
NODE Celery
- The Celery Pool is no longer Prefork(multiprocessing), it was changed to an eventlet pool (Greenlets).
- The NODE runs with
16
greenlets by default. More testing is needed, blocked by ticket.
Monetdb Connection
The MonetDBConnection
was refactored, instead of a Singleton, to a Connection Pool. Each query uses a connection from the pool.
Query Execution On the query execution level locks have been added.
-
create_remote_table_query_lock
is needed in order to avoid a bug found in MonetDB. Jira-614 -
create_function_query_lock
is needed in order to avoid the exception of 'CREATE OR REPLACE FUNCTION: transaction conflict detected'. -
insert_query_lock
is needed to avoid the parallel execution of udfs in the database. This is needed in order to preserve the zero cost that MonetDB is providing.
Logging A logger will be initialized for each task, instead of being a singleton, uniquely identified by the celery task id.