[ 
https://issues.apache.org/jira/browse/UNOMI-1002?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Serge Huber reassigned UNOMI-1002:
----------------------------------

    Assignee: Serge Huber

> In compatibility mode, all public requests wait on each other
> -------------------------------------------------------------
>
>                 Key: UNOMI-1002
>                 URL: https://issues.apache.org/jira/browse/UNOMI-1002
>             Project: Apache Unomi
>          Issue Type: Bug
>    Affects Versions: unomi-4.0.0
>            Reporter: Serge Huber
>            Assignee: Serge Huber
>            Priority: Critical
>             Fix For: unomi-4.0.0
>
>
> h3. Summary
> In single-tenant compatibility mode, every public request, such as 
> context.json or the event collector, checks that the default tenant exists. 
> This check runs one request at a time across the whole server, and it reads 
> the tenant from the database each time. Under load, public requests queue 
> behind each other.
> This came with UNOMI-980, which made the mode create its tenant on its own. 
> Jonathan Sinovassin-Naïk has offered to propose a fix.
> The goal of this ticket is that public requests in compatibility mode do not 
> wait on each other.
> h3. Ways to explore
> * Create the default tenant once, when the mode starts or on the first 
> request, then read it from a cache.
> * Only take the lock when the tenant does not exist yet.
> * The tenant id stays fixed by the mode and is never taken from the request.
> * Refresh the cached tenant when it is updated or deleted.
> h3. How to test
> Manual check: run many parallel context.json requests in compatibility mode. 
> They should not be slower than in normal mode.
> Automated tests to add:
> * A unit test that sends many public requests in compatibility mode and 
> checks that the tenant is read from the database once, not once per request.
> * A concurrency test where many first requests arrive at the same time on an 
> empty system: exactly one tenant is created, and every request succeeds.
> * A test that an update or deletion of the tenant is seen by the next request.
> * A test that no request header or parameter can change which tenant is 
> created or used.
> * The existing compatibility mode tests for UNOMI-980 still pass.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to