Skip to content
This repository was archived by the owner on Nov 30, 2022. It is now read-only.

B/add continuous background job handler #757

Merged
merged 14 commits into from
Oct 6, 2020

Conversation

Alexander-Dubrawski
Copy link
Collaborator

@Alexander-Dubrawski Alexander-Dubrawski commented Sep 7, 2020

This PR is the secound of four which aims to refactor the handling of Hyrise jobs (it aims to split #664). Hyrise jobs are interacting directly with the Hyrise to get the meta information and managing the Hyrise settings. We have three kinds of jobs:

  1. jobs that need to be continuously in the background (for example: get the system information)
  2. jobs that will be done asynchronously (for example: loading the tables)
  3. jobs that are done synchronously (for example: sending a SQL query over the SQL endpoint)

Both continuous and asynchronous jobs are executed via the apscheduler (https://apscheduler.readthedocs.io/en/stable/). Esspacillay with the asynchronous jobs that's not necessary and increases the complexity (we could just use normal python threads). All three kinds of jobs are scattered in the database and background_scheduler component. The goal of the refactoring is now to have a clear separation for the jobs in the three categories (continuous, asynchronous, and synchronous) and define handlers for that. Moreover, we can stop the continuous jobs while loading/deleting tables (hyrise/hyrise#2180).

This PR implements the handler for continuous jobs.

ToDo

  • improve docstrings
  • move background scheduler logic to database

Copy link
Contributor

@Bensk1 Bensk1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly comments regarding small typos in the documentation.

Comment on lines +42 to +56
assert continuous_job_handler._connection_factory == "connection_factory"
assert continuous_job_handler._hyrise_active == "hyrise_active"
assert continuous_job_handler._worker_pool == "worker_pool"
assert (
continuous_job_handler._storage_connection_factory
== "storage_connection_factory"
)
assert continuous_job_handler._previous_system_data == {
"previous_system_usage": None,
"previous_process_usage": None,
}
assert continuous_job_handler._previous_chunk_data == {
"value": None,
}
assert continuous_job_handler._scheduler == mock_background_scheduler_obj
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these asserts the correct way for testing? If the asserts fail, the program crashes, doesn't it? I expected something like assertEqual

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the normal syntax for pytest. pytest is a third-party unit test framework with a more lighter-weight syntax. If an assert fails only the test fails.

@Alexander-Dubrawski Alexander-Dubrawski merged commit 81847e3 into dev Oct 6, 2020
@Alexander-Dubrawski Alexander-Dubrawski deleted the B/Add_continuous_background_job_handler branch October 6, 2020 13:27
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants