Back to Feed
article 3m read

A log uploader bundled every helper log in the folder, not just its own

One change answered which helper logs belong to a session in two ways: the backfill path followed the IDs in the main log, while the live hook took everything nearby, and the server stamped today's branch on all of it. A duplicate guard in the same change marks a session handled before the work succeeds.

Article DepthPractice

Flow

Picking helpers and handling a repeat

  1. 1Read the main log

    Collect the IDs of the helpers this session started.

  2. 2Fetch only those

    Attach the matching files, and count names that had no file.

  3. 3Mark in progress

    Note that the session is being handled before the save starts.

  4. 4Mark done after saving

    Skip a repeat only when the note says done.

Reading a change to a tool that uploads coding-assistant session logs, I found it answered one question two different ways: which helper logs belong to the session that just ended?

Helper sessions keep their own logs

When a session ends, a hook reads the log and sends it to a server. The assistant can also start helper sessions for smaller jobs, and each helper keeps its own log. If you only send the main log, the helpers' work is lost. So the change bundles helper logs into the same upload.

Old imports follow the IDs

When the tool imports old sessions in bulk, it reads each main log, finds the IDs of the helpers that session started, and attaches only those files. It also leaves the branch and commit off old sessions, since today's branch says nothing about old work. That's the careful version.

Live uploads grab the whole folder

When a session ends for real, the hook lists the folder the log sits in and attaches every file that looks like a helper log. It never checks whether this session started them.

It attaches every file in the folder that looks like a helper log.

My guess, from how the backfill path is built, is that one folder holds helpers from many sessions. If so, every upload drags along old helpers too. The server then processes each one again, and stamps today's branch and commit onto them. An old helper ends up labeled with the wrong branch, and that looks completely believable in a report. I couldn't tell from the change whether repeat uploads become duplicate rows.

If you build something like this, pick helpers by what the main log names, not by what sits nearby. And count how many helpers the log names versus how many you found, so a change in the log format shows up as a number.

Ignoring a repeat too early

The server also tries to ignore a session end that arrives twice. It remembers each session ID for a few seconds and answers repeats with success. But it writes that note before doing the work. If the work fails, a quick retry is told it already succeeded, and the log never gets stored. The note also lives in one process, so a second server or a restart doesn't see it.

Write "in progress" first, write "done" only after the save works, and skip only on "done".

The test I'd want first

A test with two sessions and one stray helper in the same folder would show in a few lines which helpers each path really picks. I'd want that before trusting either one.

Keep reading

Pick up a connected idea or branch into a nearby one.

5 paths forward