Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE] Automatic task distribution #5000

Closed
10 tasks done
nataliaElv opened this issue Jun 12, 2024 · 0 comments · Fixed by #5136
Closed
10 tasks done

[FEATURE] Automatic task distribution #5000

nataliaElv opened this issue Jun 12, 2024 · 0 comments · Fixed by #5136
Labels
type: enhancement Indicates new feature requests
Milestone

Comments

@nataliaElv
Copy link
Member

nataliaElv commented Jun 12, 2024

SDK

Preview Give feedback
  1. burtenshaw
  2. burtenshaw
  3. burtenshaw

UI

Preview Give feedback
No tasks being tracked yet.
@nataliaElv nataliaElv added the type: enhancement Indicates new feature requests label Jun 12, 2024
@nataliaElv nataliaElv added this to the v2.1.0 milestone Jun 12, 2024
jfcalvo added a commit that referenced this issue Jul 4, 2024
…nly (#5148)

# Description

Add changes to `responses_submitted` relationship to avoid problems with
existent `responses` relationship and avoid a warning message that
SQLAlchemy was reporting.

Refs #5000 

**Type of change**

- Improvement (change adding some improvement to an existing
functionality)

**How Has This Been Tested**

- [x] Warning is not showing anymore.
- [x] Test are passing.

**Checklist**

- I added relevant documentation
- follows the style guidelines of this project
- I did a self-review of my code
- I made corresponding changes to the documentation
- I confirm My changes generate no new warnings
- I have added tests that prove my fix is effective or that my feature
works
- I have added relevant notes to the CHANGELOG.md file (See
https://keepachangelog.com/)
@nataliaElv nataliaElv modified the milestones: v2.1.0, v2.0.0 Jul 9, 2024
jfcalvo added a commit that referenced this issue Jul 12, 2024
…riable setting (#5213)

# Description

On the distribution task testing effort meeting we found some errors
raised by SQLite when the database was locked because too many writes
were executed concurrently.

Increasing the timeout for SQLite reduces this problem, specifically
changing the connection `timeout` parameter from the default value of
`5` seconds to `30` seconds make the problem totally disappear locally.

In this PR I have added a new `ARGILLA_DATABASE_SQLITE_TIMEOUT`
environment variable that allow us to set a value for this. With a
default value of `15` seconds.

The idea is to test this change on Spaces using a value of `30` seconds.

Refs #5000 

**Type of change**

- Improvement (change adding some improvement to an existing
functionality)

**How Has This Been Tested**

- Tested locally using SQLite and running 20 parallel response creations
in bulk.

**Checklist**

- I added relevant documentation
- I followed the style guidelines of this project
- I did a self-review of my code
- I made corresponding changes to the documentation
- I confirm My changes generate no new warnings
- I have added tests that prove my fix is effective or that my feature
works
- I have added relevant notes to the CHANGELOG.md file (See
https://keepachangelog.com/)
jfcalvo added a commit that referenced this issue Jul 12, 2024
…_DATABASE_POSTGRESQL_MAX_OVERFLOW` (#5220)

# Description

After testing a high number of concurrent requests using PostgreSQL I
received the following error:

```
QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30.00
```

This PR add the following two environment variables so we can configure
the pool size and max overflow.

Refs #5000 

**Type of change**

- Improvement (change adding some improvement to an existing
functionality)

**How Has This Been Tested**

- [x] Manually testing with PostgreSQL.

**Checklist**

- I added relevant documentation
- I followed the style guidelines of this project
- I did a self-review of my code
- I made corresponding changes to the documentation
- I confirm My changes generate no new warnings
- I have added tests that prove my fix is effective or that my feature
works
- I have added relevant notes to the CHANGELOG.md file (See
https://keepachangelog.com/)
jfcalvo added a commit that referenced this issue Jul 16, 2024
# Description

After investigate timeouts for PostgreSQL I have found that timeouts
should not affect errors when a SERIALIZABLE transactions is rollbacked
because another concurrent update error is raised.

So the only way to support concurrent updates with PostgreSQL and
SERIALIZABLE transactions is to capture errors and retry the
transaction.

This code has the following changes:
* Start using `backoff` library to retry any of the possible CRUD
context functions updating responses and record statuses, using
SERIALIZABLE database sessions.
* This change has the side effect of working with PostgreSQL and SQLite
at the same time.
* I have set a fixed time of 15 seconds as maximum time for retrying
with exponential backoff.
* I have moved search engine updates outside of the transaction block.
* This should mitigate errors on high concurrency scenarios for
PostgreSQL and SQLite:
* For SQLite we have the additional setting to set a timeout if
necessary.
* I have changed `DEFAULT_DATABASE_SQLITE_TIMEOUT` value to `5` seconds
so the backoff logic will handle possible problems with locked database
errors and SQLite.

Refs #5000 

**Type of change**

- Improvement (change adding some improvement to an existing
functionality)

**How Has This Been Tested**

- [x] Manually testing with PostgreSQL and SQLite, running benchmarks
using 20 concurrent requests.
- [x] Running test suite for PostgreSQL and SQLite.

**Checklist**

- I added relevant documentation
- I followed the style guidelines of this project
- I did a self-review of my code
- I made corresponding changes to the documentation
- I confirm My changes generate no new warnings
- I have added tests that prove my fix is effective or that my feature
works
- I have added relevant notes to the CHANGELOG.md file (See
https://keepachangelog.com/)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: enhancement Indicates new feature requests
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant