Skip to content

v2.9.1: events are inserted but receive stale timestamps after upgrade #1205

Description

@Perrschy

Description

After upgrading a self-hosted Rybbit instance from 2.8.0 to the current latest backend image (the container reports rybbit-backend@2.9.1), pageviews are accepted and inserted into ClickHouse, but all newly inserted rows receive old timestamps.

The dashboard therefore appears frozen at the upgrade time although the events table keeps growing.

Environment

  • Self-hosted Docker Compose deployment
  • Backend reports: rybbit-backend@2.9.1
  • ClickHouse: 26.3.17.4
  • Database: analytics
  • Backend uses 4 cluster workers
  • Tracking endpoint: POST /api/track
  • Events are forwarded server-to-server from a first-party collector

Evidence

At the start of the investigation:

SELECT count(), max(timestamp) FROM analytics.events

8913097    2026-09-15 14:57:22

Later, after many successful incoming pageviews:

SELECT count() AS rows, max(timestamp) AS newest_event FROM events

8915273    2026-09-15 14:57:22

So 2,176 rows were added, but max(timestamp) did not advance.

The backend's pageviewQueue was temporarily instrumented. For every received pageview it logged both:

Pageview queue batch started
Pageview queue insert starting

No Error processing pageview queue errors occurred.

Both containers have the same correct current UTC time:

backend:    Tue Sep 15 14:06:26 UTC 2026
clickhouse: Tue Sep 15 02:06:26 PM UTC 2026

ClickHouse itself reported approximately 16:03 in Europe/Berlin, while the newest event remained at 14:57:22 Europe/Berlin.

I also tested disabling ClickHouse async inserts explicitly:

<async_insert>0</async_insert>

The setting was active at runtime, but the symptom remained unchanged.

## Expected behavior

Each accepted POST /api/track request should create an events row with the current server receive time, and the dashboard should show current traffic.

## Actual behavior

Rows are inserted, but their timestamps are stale/backdated. Dashboard and time-based queries stop progressing even though row count increases.

## Additional note

The forwarding collector had to truncate an excessively long referrer because 2.9.1 now correctly rejects referrers over 2048 characters. That validation issue was fixed separately and is not the cause of the stale timestamps.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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