Smartphone:
- Pixel 9 (Graphene OS 2026070500)
- Owntracks 2.5.9 (installed via F-Droid)
Environment:
- TrueNAS Scale 25.10
- Deployed using Portainer
- Reitti: dedicatedcode/reitti:5
- Tile Cache: dedicatedcode/reitti-tile-cache:5
- PostGIS: postgis/postgis:17-3.5-alpine
- Redis: redis:7-alpine
- Fresh installation on Sunday July 5.
- No upgrades performed after deployment
Problem:
The application worked normally for approximately two days after deployment.
On July 7, location ingestion stopped and the logs began filling with:
ERROR: no partition of relation "staging_location_points" found for row
Detail: Partition key of the failing row contains (partition_key) = (stream_1_1_20260707)
The application repeatedly logged:
Failed to flush batch for partition stream_1_1_20260707
Database investigation:
The only partition present was:
staged_stream_1_1_20260706
No partition existed for:
staged_stream_1_1_20260707
The application was attempting to insert rows with:
partition_key = stream_1_1_20260707
which caused PostgreSQL to reject inserts.
Significant log entry:
While reviewing logs, I found:
2026-07-07T04:00:00.099Z INFO
Janitor: Dropping fully promoted and inactive partition
[staged_stream_1_1_20260707]
Later, the application continued attempting to write to:
stream_1_1_20260707
and failed because the partition no longer existed.
Recovery
I manually recreated the partition:
CREATE TABLE staged_stream_1_1_20260707
PARTITION OF staging_location_points
FOR VALUES IN ('stream_1_1_20260707');
Immediately after creating the partition:
- Location ingestion resumed
- Errors stopped
- Live processing resumed
- New rows were successfully inserted
Verification:
SELECT COUNT(*)
FROM staged_stream_1_1_20260707;
returned rows successfully.
SELECT MAX(timestamp)
FROM staging_location_points;
showed current timestamps again.
Question
Is it expected for the Janitor job to drop:
staged_stream_1_1_20260707
at 04:00 UTC while the system is still actively ingesting data using:
stream_1_1_20260707
This appears to have caused the ingestion pipeline to fail until the partition was recreated manually.
Smartphone:
Environment:
Problem:
The application worked normally for approximately two days after deployment.
On July 7, location ingestion stopped and the logs began filling with:
ERROR: no partition of relation "staging_location_points" found for row
Detail: Partition key of the failing row contains (partition_key) = (stream_1_1_20260707)
The application repeatedly logged:
Failed to flush batch for partition stream_1_1_20260707
Database investigation:
The only partition present was:
staged_stream_1_1_20260706
No partition existed for:
staged_stream_1_1_20260707
The application was attempting to insert rows with:
partition_key = stream_1_1_20260707
which caused PostgreSQL to reject inserts.
Significant log entry:
While reviewing logs, I found:
2026-07-07T04:00:00.099Z INFO
Janitor: Dropping fully promoted and inactive partition
[staged_stream_1_1_20260707]
Later, the application continued attempting to write to:
stream_1_1_20260707
and failed because the partition no longer existed.
Recovery
I manually recreated the partition:
CREATE TABLE staged_stream_1_1_20260707
PARTITION OF staging_location_points
FOR VALUES IN ('stream_1_1_20260707');
Immediately after creating the partition:
Verification:
SELECT COUNT(*)
FROM staged_stream_1_1_20260707;
returned rows successfully.
SELECT MAX(timestamp)
FROM staging_location_points;
showed current timestamps again.
Question
Is it expected for the Janitor job to drop:
staged_stream_1_1_20260707
at 04:00 UTC while the system is still actively ingesting data using:
stream_1_1_20260707
This appears to have caused the ingestion pipeline to fail until the partition was recreated manually.