blog for the day
This commit is contained in:
parent
27ac0ec332
commit
2c4b39be4f
1 changed files with 28 additions and 0 deletions
28
doc/design/assistant/blog/day_26__dying_drives.mdwn
Normal file
28
doc/design/assistant/blog/day_26__dying_drives.mdwn
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
My laptop's SSD died this morning. I had some work from yesterday
|
||||||
|
committed to the git repo on it, but not pushed as it didn't build.
|
||||||
|
Luckily I was able to get that off the SSD, which is now a read-only
|
||||||
|
drive -- even mounting it fails with fsck write errors.
|
||||||
|
|
||||||
|
Wish I'd realized the SSD was dying before the day before my trip to
|
||||||
|
Nicaragua..
|
||||||
|
Getting back to a useful laptop used most of my time and energy today.
|
||||||
|
|
||||||
|
I did manage to fix transfers to not block the rest of the assistant's
|
||||||
|
threads. Problem was that, without Haskell's threaded runtime, waiting
|
||||||
|
on something like a rsync command blocks all threads. To fix this,
|
||||||
|
transfers now are run in separate processes.
|
||||||
|
|
||||||
|
Also added code to allow multiple transfers to run at once. Each transfer
|
||||||
|
takes up a slot, with the number of free slots tracked by a `QSemN`.
|
||||||
|
This allows the transfer starting thread to block until a slot frees up,
|
||||||
|
and then run the transfer.
|
||||||
|
|
||||||
|
This needs to be extended to be aware of transfers initiated by remotes.
|
||||||
|
The transfer watcher thread should detect those starting and stopping
|
||||||
|
and update the `QSemN` accordingly. It would also be nice if transfers
|
||||||
|
initiated by remotes would be delayed when there are no free slots for them
|
||||||
|
... but I have not thought of a good way to do that.
|
||||||
|
|
||||||
|
There's a bug somewhere in the new transfer code, when two transfers are
|
||||||
|
queued close together, the second one is lost and doesn't happen.
|
||||||
|
Would debug this, but I'm spent for the day.
|
Loading…
Reference in a new issue