Skip to content

Commit 7a415ae

Browse files
committed
Recheck and revive staged mount when mounting it to the real path
1 parent 96818e5 commit 7a415ae

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

pkg/driver/nodeserver.go

+22-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,28 @@ func (ns *nodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublis
8484
return nil, status.Error(codes.InvalidArgument, "Target path missing in request")
8585
}
8686

87-
notMnt, err := checkMount(targetPath)
87+
notMnt, err := checkMount(stagingTargetPath)
88+
if err != nil {
89+
return nil, status.Error(codes.Internal, err.Error())
90+
}
91+
if notMnt {
92+
// Staged mount is dead by some reason. Revive it
93+
bucketName, prefix := volumeIDToBucketPrefix(volumeID)
94+
s3, err := s3.NewClientFromSecret(req.GetSecrets())
95+
if err != nil {
96+
return nil, fmt.Errorf("failed to initialize S3 client: %s", err)
97+
}
98+
meta := getMeta(bucketName, prefix, req.VolumeContext)
99+
mounter, err := mounter.New(meta, s3.Config)
100+
if err != nil {
101+
return nil, err
102+
}
103+
if err := mounter.Mount(stagingTargetPath, volumeID); err != nil {
104+
return nil, err
105+
}
106+
}
107+
108+
notMnt, err = checkMount(targetPath)
88109
if err != nil {
89110
return nil, status.Error(codes.Internal, err.Error())
90111
}

0 commit comments

Comments
 (0)