Skip to content

[Bug] Janitor drops active staging partition causing location ingestion failure #1095

Description

@mdaugustine1

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions