Merge ~cjwatson/launchpad-mojo-specs:git-hard-mount into launchpad-mojo-specs:master

Proposed by Colin Watson
Status: Merged
Merged at revision: 571f506e0f30432d44b7f294c8534fc6feb113d5
Proposed branch: ~cjwatson/launchpad-mojo-specs:git-hard-mount
Merge into: launchpad-mojo-specs:master
Diff against target: 13 lines (+1/-1)
1 file modified
mojo-lp-git/services (+1/-1)
Reviewer Review Type Date Requested Status
Ioana Lasc Approve
Review via email:

Commit message

git: Use "hard" NFS client recovery

Description of the change

From nfs(5):

  soft / hard Determines the recovery behavior of the NFS client after
                an NFS request times out. If neither option is
                specified (or if the hard option is specified), NFS
                requests are retried indefinitely. If the soft option
                is specified, then the NFS client fails an NFS request
                after retrans retransmissions have been sent, causing
                the NFS client to return an error to the calling

                NB: A so-called "soft" timeout can cause silent data
                corruption in certain cases. As such, use the soft
                option only when client responsiveness is more important
                than data integrity. Using NFS over TCP or increasing
                the value of the retrans option may mitigate some of the
                risks of using the soft option.

I think I initially went for "soft" because retrying forever rather than failing seemed undesirable, and because the code writing to this NFS mount is very limited and known to have reasonable error handling. However, it seems that under load this can also cause the client to
consider the NFS mount dead after relatively short periods of unresponsiveness when it might otherwise be able to recover. Let's see if using the default of "hard" works more gracefully in practice.

To post a comment you must log in.
Revision history for this message
Ioana Lasc (ilasc) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/mojo-lp-git/services b/mojo-lp-git/services
2index 64d2fb9..76362ac 100644
3--- a/mojo-lp-git/services
4+++ b/mojo-lp-git/services
5@@ -150,7 +150,7 @@ turnip:
6 {%- else %}
7 - ppa:nfs-ganesha-charmers/ubuntu/backports-staging
8 {%- endif %}
9- mount_options: "nfsvers=4.2,soft,lookupcache=positive"
10+ mount_options: "nfsvers=4.2,lookupcache=positive"
11 nagios_context: "{{ nagios_context }}"
12 turnip-pack-backend:
13 charm: turnip-pack-backend


People subscribed via source and target branches