This PR applies the refactoring proposed by @icehaunter which consists of storing the tenant information in a protected ETS table. Any process can read the tenant information from the ETS table.
Concurrent reads
On every shape request the tenant information is loaded from the ETS table.
Concurrent shape requests can read this information from the ETS table concurrently.
Serialised writes
Writes to the ETS table are less frequent (only when adding or removing tenants) and are still serialised through the tenant manager's genserver and thus are not prone to race conditions.
This PR applies the refactoring proposed by @icehaunter which consists of storing the tenant information in a protected ETS table. Any process can read the tenant information from the ETS table.
Concurrent reads
On every shape request the tenant information is loaded from the ETS table. Concurrent shape requests can read this information from the ETS table concurrently.
Serialised writes
Writes to the ETS table are less frequent (only when adding or removing tenants) and are still serialised through the tenant manager's genserver and thus are not prone to race conditions.