1 | | When the number of servers used in allmydata.test.test_mutable.Update is changed from the default value of ten to something greater than ten, almost all of the tests fail due to key error. |
| 1 | When the number of servers used in a grid is greater than or equal to N + k, there is a race condition when mutable files are updated. ServermapUpdater will hit a threshold after EPSILON servers (currently EPSILON = k) from the permuted server list do not have any shares. This will cause the process to finish and reject any remaining responses. |
| 2 | |
| 3 | However, this can occur before the ServermapUpdater has added the server to the servermap, causing the client to reject the server's response. Since the server is not added to the servermap, a writer for that server is not created. This causes a key error when the updater attempts to retrieve the corresponding writer for each share. |
| 4 | |
| 5 | This race condition can be replicated by setting the number of servers for allmydata.test.test_mutable.Update to 13. |