The sound distributed version control system

#512 [CRASH] on importing a large-ish git repository

Opened by potocpav on August 9, 2021
potocpav on August 9, 2021

Hi, I wanted to try pijul on a large-ish private repository I am working on. It contains 30k commits, 500 files on master, and the .git folder is 350 MB large.

After running pijul git for several minutes, when approx. 1/4 of the history is converted according to git status, I get the following error:

Error: Block error: Position { change: ChangeId(DCC73FQ7RAEWA), pos: ChangePosition(L64(174)) }

There is no other output.

Is there anything I can do to debug the issue, given the repository is not public? I can try to replicate on some public repositories.

potocpav on August 11, 2021

Tried again on master. There is some console output now for pijul git, but otherwise the error is the same.

fabian on August 11, 2021

Hi @potocpav, you can get some more log information with environment variables.

(For eg in fish shell: env RUST_LOG="pijul=debug,libpijul=debug" pijul)

potocpav on August 12, 2021

Thanks @fabian. This is the output:

[2021-08-12T13:05:32Z DEBUG libpijul::apply] Applying SolveOrderConflict { change: NewVertex(NewVertex { up_context: [Position { change: Some(DCC73FQ7RAEWBQST2EZIYYWGYQQOLGXJSYMA2ACJ6X3UZISGYTXAC), pos: ChangePosition(L64(174)) }], down_context: [], flag: (empty), start: ChangePosition(L64(271)), end: ChangePosition(L64(271)), inode: Position { change: Some(JGFTASFVPG4DPQFVIK2JBT7HXAYDRFXCJF2RFLKGA3IOZNWGHUVAC), pos: ChangePosition(L64(798)) } }), local: Local { path: "src/Administration/AdministrationControl.hs", line: 746 } } (1)
[2021-08-12T13:05:32Z DEBUG libpijul::pristine::sanakirja] find_block_end, loop, k = V(ChangeId(MUGIEC3PYRAGY)[0:63]), p = Position { change: ChangeId(SP6HYYHILE7GY), pos: ChangePosition(L64(271)) }
[2021-08-12T13:05:32Z DEBUG libpijul::pristine::sanakirja] find_block_end, loop, k = V(ChangeId(SP6HYYHILE7GY)[269:269]), p = Position { change: ChangeId(SP6HYYHILE7GY), pos: ChangePosition(L64(271)) }
[2021-08-12T13:05:32Z DEBUG libpijul::pristine::sanakirja] find_block_end, V(ChangeId(SP6HYYHILE7GY)[269:269]) Position { change: ChangeId(SP6HYYHILE7GY), pos: ChangePosition(L64(271)) }
[2021-08-12T13:05:32Z DEBUG libpijul::pristine::sanakirja] find_block_end, V(ChangeId(MUGIEC3PYRAGY)[0:63]) Position { change: ChangeId(SP6HYYHILE7GY), pos: ChangePosition(L64(271)) }
[2021-08-12T13:05:32Z DEBUG libpijul::pristine::sanakirja] find_block_end: BLOCK ERROR
[2021-08-12T13:05:32Z DEBUG libpijul::pristine::sanakirja] find_block: BLOCK ERROR
[2021-08-12T13:05:32Z DEBUG libpijul::apply::vertex] put_newvertex V(ChangeId(SP6HYYHILE7GY)[271:271]) [Position { change: Some(DCC73FQ7RAEWBQST2EZIYYWGYQQOLGXJSYMA2ACJ6X3UZISGYTXAC), pos: ChangePosition(L64(174)) }] [] (empty) ChangeId(SP6HYYHILE7GY)
[2021-08-12T13:05:32Z DEBUG libpijul::apply::vertex] put_up_context Position { change: ChangeId(DCC73FQ7RAEWA), pos: ChangePosition(L64(174)) }
[2021-08-12T13:05:32Z DEBUG libpijul::pristine::sanakirja] find_block_end, loop, k = V(ChangeId(DCC73FQ7RAEWA)[174:208]), p = Position { change: ChangeId(DCC73FQ7RAEWA), pos: ChangePosition(L64(174)) }
[2021-08-12T13:05:32Z DEBUG libpijul::pristine::sanakirja] find_block_end, loop, k = V(ChangeId(DCC73FQ7RAEWA)[35:173]), p = Position { change: ChangeId(DCC73FQ7RAEWA), pos: ChangePosition(L64(174)) }
[2021-08-12T13:05:32Z DEBUG libpijul::pristine::sanakirja] find_block_end, V(ChangeId(DCC73FQ7RAEWA)[35:173]) Position { change: ChangeId(DCC73FQ7RAEWA), pos: ChangePosition(L64(174)) }
[2021-08-12T13:05:32Z DEBUG libpijul::pristine::sanakirja] find_block_end, V(ChangeId(DCC73FQ7RAEWA)[174:208]) Position { change: ChangeId(DCC73FQ7RAEWA), pos: ChangePosition(L64(174)) }
[2021-08-12T13:05:32Z DEBUG libpijul::pristine::sanakirja] find_block_end: BLOCK ERROR
[2021-08-12T13:05:32Z DEBUG pijul] Block error: Position { change: ChangeId(DCC73FQ7RAEWA), pos: ChangePosition(L64(174)) }
Error: Block error: Position { change: ChangeId(DCC73FQ7RAEWA), pos: ChangePosition(L64(174)) }

There are many BLOCK ERROR messages sprinkled thoughout the log, but they don’t seem to be fatal (?)