|
Last change
on this file since 002cf5f was 002cf5f, checked in by Boris Gjorgjievski <boris@…>, 7 days ago |
|
Phase 8: connection pooling and concurrent-enrolment handling
Two enrolments for the same semester sent at once both pass the
"already enrolled" check, because each transaction reads the state from
before the other one wrote. UNIQUE (user_id, semester_id) is what
settles it, so EnrollAsync now catches the 23505 and returns the same
sentence instead of a 500.
Sizes the connection pool in the connection string (max 10, min 1)
rather than taking Npgsql's default of 100 - every physical connection
is one more channel through the SSH tunnel - and switches to
AddDbContextPool, which AppDbContext qualifies for since its only
constructor takes DbContextOptions.
docs/Ph8.md is the wiki page: the three transactional scenarios, the
isolation level and what it does not cover, and the pool settings with
the measured connection counts.
|
-
Property mode
set to
100644
|
|
File size:
517 bytes
|
| Line | |
|---|
| 1 | {
|
|---|
| 2 | "Logging": {
|
|---|
| 3 | "LogLevel": {
|
|---|
| 4 | "Default": "Information",
|
|---|
| 5 | "Microsoft.AspNetCore": "Warning"
|
|---|
| 6 | }
|
|---|
| 7 | },
|
|---|
| 8 | "ConnectionStrings": {
|
|---|
| 9 | "DefaultConnection": "Host=localhost;Port=9999;Database=db_202526z_va_prj_know2026;Username=db_202526z_va_prj_iknow2026_owner;Password=YOUR_DB_PASSWORD_HERE;Search Path=project;Include Error Detail=true;Maximum Pool Size=10;Minimum Pool Size=1;Connection Idle Lifetime=300;Timeout=15"
|
|---|
| 10 | },
|
|---|
| 11 | "Jwt": {
|
|---|
| 12 | "Key": "ANY_LOCAL_SIGNING_KEY_AT_LEAST_32_CHARACTERS_LONG"
|
|---|
| 13 | }
|
|---|
| 14 | }
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.