dCache / nfs4j

Pure Java NFSv3 and NFSv4.2 implementation
Other
240 stars 76 forks source link

Extract interface for client cache to allow custom implementations. S… #90

Closed dkocher closed 4 years ago

dkocher commented 4 years ago

…ee #37 for reasons of possible other lax implementations with non expiring client leases.

Signed-off-by: David Kocher dkocher@iterate.ch

dcache-ci commented 4 years ago

Can one of the admins verify this patch?

kofemann commented 4 years ago

ok to test

elenamplanas commented 1 year ago

How could we use this implementation to increase NFS4_LEASE_TIME ? Thanks

kofemann commented 1 year ago

The NFSv4StateHandler has a constructor that accepts a different lease times:

    /**
     * Create NFSv4 state handler with given lease time, instance id and client store.
     * The {@code instanceId} should uniquely identify this state handler.
     *
     * @param leaseTime time duration of a lease.
     * @param instanceId the nfs server instance id within deployment.
     * @param clientStore store used by state handler to keep track of valid clients.
     */
    public NFSv4StateHandler(Duration leaseTime, int instanceId, ClientRecoveryStore clientStore) {
        this(leaseTime, instanceId, clientStore, new DefaultClientCache(leaseTime, new DeadClientCollector(clientStore)));

The question is why you want to extent it?

elenamplanas commented 1 year ago

Thanks, There is a client that sends lots of requests, and they took more time to complete.

gonzalomerino commented 1 year ago

The NFSv4StateHandler has a constructor that accepts a different lease times:

    /**
     * Create NFSv4 state handler with given lease time, instance id and client store.
     * The {@code instanceId} should uniquely identify this state handler.
     *
     * @param leaseTime time duration of a lease.
     * @param instanceId the nfs server instance id within deployment.
     * @param clientStore store used by state handler to keep track of valid clients.
     */
    public NFSv4StateHandler(Duration leaseTime, int instanceId, ClientRecoveryStore clientStore) {
        this(leaseTime, instanceId, clientStore, new DefaultClientCache(leaseTime, new DeadClientCollector(clientStore)));

The question is why you want to extent it?

Hello,

We want to try to extend the lease time as part of the troubleshooting of an issue one of our uses is seeing since quite a long time.

We (Elena) sent an email to the user-forum yesterday describing the problem and asking if someone had seen a similar issue before. When we saw this github pull request we thought the leaseTime could be related to the issue we see, since we see error messages like this in the door:

04 Dec 2022 09:25:41 [OncRpcSvc (9)] [] Lost client state: op: SEQUENCE : NFS4ERR_EXPIRED : lease time expired: (104193): 4c696e7578204e465376342e312074643831342e7069632e6573 (7162855476529791179).

any advice on how to troubleshoot this will be appreciated. This problem has been causing job failures at the level of 0.5% to the user for a long time, and so far we have not been able to identify a pattern or a cause.

thanks.