'pack' does not handle concurrent packing

Bug #497558 reported by John A Meinel
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Bazaar
Confirmed
Low
Unassigned

Bug Description

The autopacking code was taught how to handle when files go missing, that it should try again from the beginning, to see if someone else did the autopack it was trying to do.

get_record_stream() was also taught how to restart the stream if it can't find something.

However 'Repository.pack()' code does not have this retry code.

The reason we did it on a case-by-case basis is because we need to be careful at what level the operation restarts. eg get_record_stream() should not re-send any records it already sent, autopack should start fresh and read the pack-names and determine if an autopack really needs to happen, etc.

This means that manually running 'bzr pack' will fail if people keep pushing to the repo and trigger an autopack. Though the flip-side is that someone needs to re-run it, and they *could* do that manually.

I only ran into this because I wanted to test the autopack stuff by running "repo1.pack(); repo2.pack()" only to find that it doesn't work. :)

Jelmer Vernooij (jelmer)
tags: added: check-for-breezy
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.