== containers (expect exactly one for this compose project) ==
bench-bugsink	bugsink/bugsink:2	Up 17 seconds (healthy)
== restart policy as Docker sees it ==
RestartPolicy=unless-stopped MaxRetry=0
== mounts (what is a volume vs the writable layer) ==
volume /var/lib/docker/volumes/bugsink-bench_bugsink-data/_data -> /data

Filesystem      Size  Used Avail Use% Mounted on
/dev/root        58G  5.8G   52G  11% /data
overlay          58G  5.8G   52G  11% /

/dev/root /data ext4 rw,relatime,discard,errors=remount-ro,commit=30 0 0
== processes inside the container (monofy -> gunicorn + bugsink-runsnappea?) ==
1	/usr/local/bin/python3.12 /usr/local/bin/monofy bugsink-show-version && bugsink-manage check --deploy --fail-level WARNING && bugsink-manage migrate snappea --database=snappea && bugsink-manage migrate && bugsink-manage prestart && gunicorn --config gunicorn.docker.conf.py --bind=0.0.0.0:$PORT --access-logfile - bugsink.wsgi ||| bugsink-runsnappea 
26	/usr/local/bin/python3.12 /usr/local/bin/gunicorn --config gunicorn.docker.conf.py --bind=0.0.0.0:8000 --access-logfile - bugsink.wsgi 
27	/usr/local/bin/python3.12 /usr/local/bin/bugsink-runsnappea 
28	/usr/local/bin/python3.12 /usr/local/bin/gunicorn --config gunicorn.docker.conf.py --bind=0.0.0.0:8000 --access-logfile - bugsink.wsgi 
29	/usr/local/bin/python3.12 /usr/local/bin/gunicorn --config gunicorn.docker.conf.py --bind=0.0.0.0:8000 --access-logfile - bugsink.wsgi 
72	sh -c for p in /proc/[0-9]*; do printf "%s\t" "${p#/proc/}"; tr "\0" " " < "$p/cmdline" 2>/dev/null; echo; done 
== effective settings (the ack contract + quota trap) ==
from django.conf import settings
from bugsink.app_settings import get_settings
from snappea.settings import get_settings as snappea_settings
s = get_settings(); ss = snappea_settings()
for k in ['\''MAX_EVENTS_PER_PROJECT_PER_5_MINUTES'\'','\''MAX_EVENTS_PER_5_MINUTES'\'','\''MAX_EVENTS_PER_PROJECT_PER_HOUR'\'','\''MAX_EVENTS_PER_HOUR'\'','\''MAX_EVENTS_PER_PROJECT_PER_MONTH'\'','\''MAX_EVENTS_PER_MONTH'\'','\''MAX_RETENTION_PER_PROJECT_EVENT_COUNT'\'','\''PHONEHOME'\'']:
    print(k, '\''='\'', getattr(s, k))
for name, db in settings.DATABASES.items():
    print('\''DATABASES[%s] = %s %s'\'' % (name, db['\''ENGINE'\''], db['\''NAME'\'']))
import os
'
34 objects imported automatically (use -v 2 for details).

SNAPPEA.TASK_ALWAYS_EAGER = False
SNAPPEA.WORKAHOLIC = True
SNAPPEA.NUM_WORKERS = 2
SNAPPEA.WAKEUP_CALLS_DIR = /tmp/snappea.wakeup
INGEST_STORE_BASE_DIR = /tmp/bugsink/ingestion
KEEP_ENVELOPES = 0
VALIDATE_ON_DIGEST = none
MAX_EVENTS_PER_PROJECT_PER_5_MINUTES = 100000
MAX_EVENTS_PER_5_MINUTES = 100000
MAX_EVENTS_PER_PROJECT_PER_HOUR = 1000000
MAX_EVENTS_PER_HOUR = 1000000
MAX_EVENTS_PER_PROJECT_PER_MONTH = 1000000
MAX_EVENTS_PER_MONTH = 1000000
MAX_RETENTION_PER_PROJECT_EVENT_COUNT = None
PHONEHOME = True
BASE_URL = http://localhost:8000
DATABASES[default] = bugsink.timed_sqlite_backend /data/db.sqlite3
DATABASES[snappea] = bugsink.timed_sqlite_backend /tmp/snappea.sqlite3
EVENT_STORAGES = {}
== gunicorn workers (min(cpu,4) per bugsink/gunicorn.docker.conf.py) ==
cpu_count 2 -> workers 2
== SQLite journal modes ==
for p in ("/data/db.sqlite3","/tmp/snappea.sqlite3"):
    c=sqlite3.connect("file:%s?mode=ro"%p,uri=True); print(p, "journal_mode=", c.execute("pragma journal_mode").fetchone()[0], "synchronous=", c.execute("pragma synchronous").fetchone()[0])'
/data/db.sqlite3 journal_mode= wal synchronous= 2
/tmp/snappea.sqlite3 journal_mode= wal synchronous= 2
== tables ==
q=sqlite3.connect("file:/tmp/snappea.sqlite3?mode=ro",uri=True); print("snappea:", " ".join(r[0] for r in q.execute("select name from sqlite_master where type=\"table\" order by name")))'
alerts_messagingserviceconfig auth_group auth_group_permissions auth_permission auth_user auth_user_groups auth_user_user_permissions bsmain_authtoken bsmain_cachedmodelcount django_admin_log django_content_type django_migrations django_session events_event events_installationeventcountsperhour events_issueeventcountsperhour events_projecteventcountsperhour files_chunk files_file files_filemetadata ingest_envelope issues_grouping issues_issue issues_turningpoint phonehome_installation phonehome_outboundmessage projects_project projects_projectmembership releases_release snappea_stat snappea_task sqlite_sequence tags_eventtag tags_issuetag tags_tagkey tags_tagvalue teams_team teams_teammembership users_emailverification
snappea: django_migrations snappea_stat snappea_task sqlite_sequence
== ingest URL routes ==
from django.urls import get_resolver
for p in get_resolver().url_patterns:
    s=str(p.pattern)
    if "api" in s or "health" in s: print(s)'
health/ready
api/canonical/0/
api/canonical/0/schema/
api/canonical/0/schema/swagger-ui/
api/0/organizations/<slug:organization_slug>/chunk-upload/
api/0/organizations/<slug:organization_slug>/artifactbundle/assemble/
api/0/projects/<slug:organization_slug>/<slug:project_slug>/files/difs/assemble/
api/
api/0/
api/<path:subpath>
