Repository: fluid-cloudnative/fluid
Pull request #4111 (2024-05-20 06:45:12)

Bump golang.org/x/time from 0.3.0 to 0.5.0
Bumps [golang.org/x/time](https://github.com/golang/time) from 0.3.0 to 0.5.0.
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/golang/time/commit/883aed519795b30de35e6bc28ec8f681494afa87"><code>883aed5</code></a> rate: add documentation on Limiter concurrent usage</li>
<li><a href="https://github.com/golang/time/commit/b24d3b5e50f7b0e18486d18f0a240d04d254ea73"><code>b24d3b5</code></a> all: add a go directive, set it to 1.18</li>
<li>See full diff in <a href="https://github.com/golang/time/compare/v0.3.0...v0.5.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/time&package-manager=go_modules&previous-version=0.3.0&new-version=0.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

fluid-e2e-bot[bot]: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by:
**Once this PR has been reviewed and has the lgtm label**, please assign trafalgarzzz for approval by writing `/assign @trafalgarzzz` in a comment. For more information see:[The Kubernetes Code Review Process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process).

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=fluid-cloudnative%2Ffluid).

<details open>
Needs approval from an approver in each of these files:

- **[OWNERS](https://github.com/fluid-cloudnative/fluid/blob/master/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["trafalgarzzz"]} -->
fluid-e2e-bot[bot]: Hi @dependabot[bot]. Thanks for your PR.

I'm waiting for a [fluid-cloudnative](https://github.com/orgs/fluid-cloudnative/people) member to verify that this patch is reasonable to test. If it is, they should reply with `/ok-to-test` on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should [join the org](https://github.com/orgs/fluid-cloudnative/people) to skip this step.

Once the patch is verified, the new status will be reflected by the `ok-to-test` label.

I understand the commands that are listed [here](https://go.k8s.io/bot-commands?repo=fluid-cloudnative%2Ffluid).

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
</details>

sonarcloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=fluid-cloudnative_fluid&pullRequest=4111) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=fluid-cloudnative_fluid&pullRequest=4111&resolved=false&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=fluid-cloudnative_fluid&pullRequest=4111&resolutions=WONTFIX)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=fluid-cloudnative_fluid&pullRequest=4111&resolved=false&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/no-data-16px.png '') No data about Coverage  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/no-data-16px.png '') No data about Duplication  
  
[See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=fluid-cloudnative_fluid&pullRequest=4111)


cheyang: /test fluid-e2e
cheyang: /test fluid-e2e

Patch:
diff --git a/api/v1alpha1/openapi_generated.go b/api/v1alpha1/openapi_generated.go
index b45c5488..9819695e 100644
--- a/api/v1alpha1/openapi_generated.go
+++ b/api/v1alpha1/openapi_generated.go
@@ -120,11 +120,11 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.TieredStore":                schema_fluid_cloudnative_fluid_api_v1alpha1_TieredStore(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.User":                       schema_fluid_cloudnative_fluid_api_v1alpha1_User(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VersionSpec":                schema_fluid_cloudnative_fluid_api_v1alpha1_VersionSpec(ref),
+		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardClientSocketSpec":   schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardClientSocketSpec(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardCompTemplateSpec":   schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardCompTemplateSpec(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardRuntime":            schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardRuntime(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardRuntimeList":        schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardRuntimeList(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardRuntimeSpec":        schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardRuntimeSpec(ref),
-		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardSockSpec":           schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardSockSpec(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.VolumeSource":               schema_fluid_cloudnative_fluid_api_v1alpha1_VolumeSource(ref),
 		"github.com/fluid-cloudnative/fluid/api/v1alpha1.WaitingStatus":              schema_fluid_cloudnative_fluid_api_v1alpha1_WaitingStatus(ref),
 	}
@@ -6497,6 +6497,102 @@ func schema_fluid_cloudnative_fluid_api_v1alpha1_VersionSpec(ref common.Referenc
 	}
 }
 
+func schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardClientSocketSpec(ref common.ReferenceCallback) common.OpenAPIDefinition {
+	return common.OpenAPIDefinition{
+		Schema: spec.Schema{
+			SchemaProps: spec.SchemaProps{
+				Description: "VineyardClientSocketSpec holds the configurations for vineyard client socket",
+				Type:        []string{"object"},
+				Properties: map[string]spec.Schema{
+					"image": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Image for Vineyard Fuse Default is `vineyardcloudnative/vineyard-fluid-fuse`",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"imageTag": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Image Tag for Vineyard Fuse Default is `v0.21.5`",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"imagePullPolicy": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Image pull policy for Vineyard Fuse Default is `IfNotPresent` Available values are `Always`, `IfNotPresent`, `Never`",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"env": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Environment variables that will be used by Vineyard Fuse. Default is not set.",
+							Type:        []string{"object"},
+							AdditionalProperties: &spec.SchemaOrBool{
+								Allows: true,
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+					"cleanPolicy": {
+						SchemaProps: spec.SchemaProps{
+							Description: "CleanPolicy decides when to clean Vineyard Fuse pods. Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted OnDemand cleans fuse pod once th fuse pod on some node is not needed OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted Defaults to OnRuntimeDeleted",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"resources": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Resources contains the resource requirements and limits for the Vineyard Fuse. Default is not set.",
+							Default:     map[string]interface{}{},
+							Ref:         ref("k8s.io/api/core/v1.ResourceRequirements"),
+						},
+					},
+					"networkMode": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Whether to use hostnetwork or not Default is HostNetwork",
+							Type:        []string{"string"},
+							Format:      "",
+						},
+					},
+					"podMetadata": {
+						SchemaProps: spec.SchemaProps{
+							Description: "PodMetadata defines labels and annotations that will be propagated to Vineyard's pods.",
+							Default:     map[string]interface{}{},
+							Ref:         ref("github.com/fluid-cloudnative/fluid/api/v1alpha1.PodMetadata"),
+						},
+					},
+					"options": {
+						SchemaProps: spec.SchemaProps{
+							Description: "Options for configuring vineyardd parameters. Supported options are as follows.\n  reserve_memory: (Bool) Whether to reserving enough physical memory pages for vineyardd.\n                  Default is true.\n  allocator: (String) The allocator used by vineyardd, could be \"dlmalloc\" or \"mimalloc\".\n             Default is \"dlmalloc\".\n  compression: (Bool) Compress before migration or spilling.\n               Default is true.\n  coredump: (Bool) Enable coredump core dump when been aborted.\n            Default is false.\n  meta_timeout: (Int) Timeout period before waiting the metadata service to be ready, in seconds\n\t\t\t\t   Default is 60.\n  etcd_endpoint: (String) The endpoint of etcd.\n                 Default is same as the etcd endpoint of vineyard worker.\n  etcd_prefix: (String) Metadata path prefix in etcd.\n               Default is \"/vineyard\".\n  size: (String) shared memory size for vineyardd.\n                 1024M, 1024000, 1G, or 1Gi.\n                 Default is \"0\", which means no cache.\n                 When the size is not set to \"0\", it should be greater than the 2048 bytes(2K).\n  spill_path: (String) Path to spill temporary files, if not set, spilling will be disabled.\n              Default is \"\".\n  spill_lower_rate: (Double) The lower rate of memory usage to trigger spilling.\n\t\t\t\t\t   Default is 0.3.\n  spill_upper_rate: (Double) The upper rate of memory usage to stop spilling.\n\t\t\t\t\t   Default is 0.8.\nDefault is as follows. fuse:\n  options:\n    size: \"0\"\n    etcd_endpoint: \"http://{{Name}}-master-0.{{Name}}-master.{{Namespace}}:{{EtcdClientPort}}\"\n\t   etcd_prefix: \"/vineyard\"",
+							Type:        []string{"object"},
+							AdditionalProperties: &spec.SchemaOrBool{
+								Allows: true,
+								Schema: &spec.Schema{
+									SchemaProps: spec.SchemaProps{
+										Default: "",
+										Type:    []string{"string"},
+										Format:  "",
+									},
+								},
+							},
+						},
+					},
+				},
+			},
+		},
+		Dependencies: []string{
+			"github.com/fluid-cloudnative/fluid/api/v1alpha1.PodMetadata", "k8s.io/api/core/v1.ResourceRequirements"},
+	}
+}
+
 func schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardCompTemplateSpec(ref common.ReferenceCallback) common.OpenAPIDefinition {
 	return common.OpenAPIDefinition{
 		Schema: spec.Schema{
@@ -6767,7 +6863,7 @@ func schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardRuntimeSpec(ref common.
 						SchemaProps: spec.SchemaProps{
 							Description: "Fuse holds the configurations for Vineyard client socket. Note that the \"Fuse\" here is kept just for API consistency, VineyardRuntime mount a socket file instead of a FUSE filesystem to make data cache available. Applications can connect to the vineyard runtime components through IPC or RPC. IPC is the default way to connect to vineyard runtime components, which is more efficient than RPC. If the socket file is not mounted, the connection will fall back to RPC.",
 							Default:     map[string]interface{}{},
-							Ref:         ref("github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardSockSpec"),
+							Ref:         ref("github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardClientSocketSpec"),
 						},
 					},
 					"tieredstore": {
@@ -6809,87 +6905,7 @@ func schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardRuntimeSpec(ref common.
 			},
 		},
 		Dependencies: []string{
-			"github.com/fluid-cloudnative/fluid/api/v1alpha1.MasterSpec", "github.com/fluid-cloudnative/fluid/api/v1alpha1.PodMetadata", "github.com/fluid-cloudnative/fluid/api/v1alpha1.TieredStore", "github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardCompTemplateSpec", "github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardSockSpec", "k8s.io/api/core/v1.Volume"},
-	}
-}
-
-func schema_fluid_cloudnative_fluid_api_v1alpha1_VineyardSockSpec(ref common.ReferenceCallback) common.OpenAPIDefinition {
-	return common.OpenAPIDefinition{
-		Schema: spec.Schema{
-			SchemaProps: spec.SchemaProps{
-				Description: "VineyardSockSpec holds the configurations for vineyard client socket",
-				Type:        []string{"object"},
-				Properties: map[string]spec.Schema{
-					"image": {
-						SchemaProps: spec.SchemaProps{
-							Description: "Image for Vineyard Fuse Default is `vineyardcloudnative/vineyard-fluid-fuse`",
-							Type:        []string{"string"},
-							Format:      "",
-						},
-					},
-					"imageTag": {
-						SchemaProps: spec.SchemaProps{
-							Description: "Image Tag for Vineyard Fuse Default is `v0.21.5`",
-							Type:        []string{"string"},
-							Format:      "",
-						},
-					},
-					"imagePullPolicy": {
-						SchemaProps: spec.SchemaProps{
-							Description: "Image pull policy for Vineyard Fuse Default is `IfNotPresent` Available values are `Always`, `IfNotPresent`, `Never`",
-							Type:        []string{"string"},
-							Format:      "",
-						},
-					},
-					"env": {
-						SchemaProps: spec.SchemaProps{
-							Description: "Environment variables that will be used by Vineyard Fuse. Default is not set.",
-							Type:        []string{"object"},
-							AdditionalProperties: &spec.SchemaOrBool{
-								Allows: true,
-								Schema: &spec.Schema{
-									SchemaProps: spec.SchemaProps{
-										Default: "",
-										Type:    []string{"string"},
-										Format:  "",
-									},
-								},
-							},
-						},
-					},
-					"cleanPolicy": {
-						SchemaProps: spec.SchemaProps{
-							Description: "CleanPolicy decides when to clean Vineyard Fuse pods. Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted OnDemand cleans fuse pod once th fuse pod on some node is not needed OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted Defaults to OnRuntimeDeleted",
-							Type:        []string{"string"},
-							Format:      "",
-						},
-					},
-					"resources": {
-						SchemaProps: spec.SchemaProps{
-							Description: "Resources contains the resource requirements and limits for the Vineyard Fuse. Default is not set.",
-							Default:     map[string]interface{}{},
-							Ref:         ref("k8s.io/api/core/v1.ResourceRequirements"),
-						},
-					},
-					"networkMode": {
-						SchemaProps: spec.SchemaProps{
-							Description: "Whether to use hostnetwork or not Default is HostNetwork",
-							Type:        []string{"string"},
-							Format:      "",
-						},
-					},
-					"podMetadata": {
-						SchemaProps: spec.SchemaProps{
-							Description: "PodMetadata defines labels and annotations that will be propagated to Vineyard's pods.",
-							Default:     map[string]interface{}{},
-							Ref:         ref("github.com/fluid-cloudnative/fluid/api/v1alpha1.PodMetadata"),
-						},
-					},
-				},
-			},
-		},
-		Dependencies: []string{
-			"github.com/fluid-cloudnative/fluid/api/v1alpha1.PodMetadata", "k8s.io/api/core/v1.ResourceRequirements"},
+			"github.com/fluid-cloudnative/fluid/api/v1alpha1.MasterSpec", "github.com/fluid-cloudnative/fluid/api/v1alpha1.PodMetadata", "github.com/fluid-cloudnative/fluid/api/v1alpha1.TieredStore", "github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardClientSocketSpec", "github.com/fluid-cloudnative/fluid/api/v1alpha1.VineyardCompTemplateSpec", "k8s.io/api/core/v1.Volume"},
 	}
 }
 
diff --git a/api/v1alpha1/swagger.json b/api/v1alpha1/swagger.json
index e159aa0d..0b1a3e35 100644
--- a/api/v1alpha1/swagger.json
+++ b/api/v1alpha1/swagger.json
@@ -3604,6 +3604,58 @@
         }
       }
     },
+    ".VineyardClientSocketSpec": {
+      "description": "VineyardClientSocketSpec holds the configurations for vineyard client socket",
+      "type": "object",
+      "properties": {
+        "cleanPolicy": {
+          "description": "CleanPolicy decides when to clean Vineyard Fuse pods. Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted OnDemand cleans fuse pod once th fuse pod on some node is not needed OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted Defaults to OnRuntimeDeleted",
+          "type": "string"
+        },
+        "env": {
+          "description": "Environment variables that will be used by Vineyard Fuse. Default is not set.",
+          "type": "object",
+          "additionalProperties": {
+            "type": "string",
+            "default": ""
+          }
+        },
+        "image": {
+          "description": "Image for Vineyard Fuse Default is `vineyardcloudnative/vineyard-fluid-fuse`",
+          "type": "string"
+        },
+        "imagePullPolicy": {
+          "description": "Image pull policy for Vineyard Fuse Default is `IfNotPresent` Available values are `Always`, `IfNotPresent`, `Never`",
+          "type": "string"
+        },
+        "imageTag": {
+          "description": "Image Tag for Vineyard Fuse Default is `v0.21.5`",
+          "type": "string"
+        },
+        "networkMode": {
+          "description": "Whether to use hostnetwork or not Default is HostNetwork",
+          "type": "string"
+        },
+        "options": {
+          "description": "Options for configuring vineyardd parameters. Supported options are as follows.\n  reserve_memory: (Bool) Whether to reserving enough physical memory pages for vineyardd.\n                  Default is true.\n  allocator: (String) The allocator used by vineyardd, could be \"dlmalloc\" or \"mimalloc\".\n             Default is \"dlmalloc\".\n  compression: (Bool) Compress before migration or spilling.\n               Default is true.\n  coredump: (Bool) Enable coredump core dump when been aborted.\n            Default is false.\n  meta_timeout: (Int) Timeout period before waiting the metadata service to be ready, in seconds\n\t\t\t\t   Default is 60.\n  etcd_endpoint: (String) The endpoint of etcd.\n                 Default is same as the etcd endpoint of vineyard worker.\n  etcd_prefix: (String) Metadata path prefix in etcd.\n               Default is \"/vineyard\".\n  size: (String) shared memory size for vineyardd.\n                 1024M, 1024000, 1G, or 1Gi.\n                 Default is \"0\", which means no cache.\n                 When the size is not set to \"0\", it should be greater than the 2048 bytes(2K).\n  spill_path: (String) Path to spill temporary files, if not set, spilling will be disabled.\n              Default is \"\".\n  spill_lower_rate: (Double) The lower rate of memory usage to trigger spilling.\n\t\t\t\t\t   Default is 0.3.\n  spill_upper_rate: (Double) The upper rate of memory usage to stop spilling.\n\t\t\t\t\t   Default is 0.8.\nDefault is as follows. fuse:\n  options:\n    size: \"0\"\n    etcd_endpoint: \"http://{{Name}}-master-0.{{Name}}-master.{{Namespace}}:{{EtcdClientPort}}\"\n\t   etcd_prefix: \"/vineyard\"",
+          "type": "object",
+          "additionalProperties": {
+            "type": "string",
+            "default": ""
+          }
+        },
+        "podMetadata": {
+          "description": "PodMetadata defines labels and annotations that will be propagated to Vineyard's pods.",
+          "default": {},
+          "$ref": "#/definitions/.PodMetadata"
+        },
+        "resources": {
+          "description": "Resources contains the resource requirements and limits for the Vineyard Fuse. Default is not set.",
+          "default": {},
+          "$ref": "#/definitions/v1.ResourceRequirements"
+        }
+      }
+    },
     ".VineyardCompTemplateSpec": {
       "description": "VineyardCompTemplateSpec is the common configurations for vineyard components including Master and Worker.",
       "type": "object",
@@ -3747,7 +3799,7 @@
         "fuse": {
           "description": "Fuse holds the configurations for Vineyard client socket. Note that the \"Fuse\" here is kept just for API consistency, VineyardRuntime mount a socket file instead of a FUSE filesystem to make data cache available. Applications can connect to the vineyard runtime components through IPC or RPC. IPC is the default way to connect to vineyard runtime components, which is more efficient than RPC. If the socket file is not mounted, the connection will fall back to RPC.",
           "default": {},
-          "$ref": "#/definitions/.VineyardSockSpec"
+          "$ref": "#/definitions/.VineyardClientSocketSpec"
         },
         "master": {
           "description": "Master holds the configurations for Vineyard Master component Represents the Etcd component in Vineyard",
@@ -3784,50 +3836,6 @@
         }
       }
     },
-    ".VineyardSockSpec": {
-      "description": "VineyardSockSpec holds the configurations for vineyard client socket",
-      "type": "object",
-      "properties": {
-        "cleanPolicy": {
-          "description": "CleanPolicy decides when to clean Vineyard Fuse pods. Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted OnDemand cleans fuse pod once th fuse pod on some node is not needed OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted Defaults to OnRuntimeDeleted",
-          "type": "string"
-        },
-        "env": {
-          "description": "Environment variables that will be used by Vineyard Fuse. Default is not set.",
-          "type": "object",
-          "additionalProperties": {
-            "type": "string",
-            "default": ""
-          }
-        },
-        "image": {
-          "description": "Image for Vineyard Fuse Default is `vineyardcloudnative/vineyard-fluid-fuse`",
-          "type": "string"
-        },
-        "imagePullPolicy": {
-          "description": "Image pull policy for Vineyard Fuse Default is `IfNotPresent` Available values are `Always`, `IfNotPresent`, `Never`",
-          "type": "string"
-        },
-        "imageTag": {
-          "description": "Image Tag for Vineyard Fuse Default is `v0.21.5`",
-          "type": "string"
-        },
-        "networkMode": {
-          "description": "Whether to use hostnetwork or not Default is HostNetwork",
-          "type": "string"
-        },
-        "podMetadata": {
-          "description": "PodMetadata defines labels and annotations that will be propagated to Vineyard's pods.",
-          "default": {},
-          "$ref": "#/definitions/.PodMetadata"
-        },
-        "resources": {
-          "description": "Resources contains the resource requirements and limits for the Vineyard Fuse. Default is not set.",
-          "default": {},
-          "$ref": "#/definitions/v1.ResourceRequirements"
-        }
-      }
-    },
     ".VolumeSource": {
       "description": "VolumeSource defines volume source and volume claim template.",
       "type": "object",
diff --git a/api/v1alpha1/vineyardruntime_types.go b/api/v1alpha1/vineyardruntime_types.go
index cb2ad0ca..c63cf955 100644
--- a/api/v1alpha1/vineyardruntime_types.go
+++ b/api/v1alpha1/vineyardruntime_types.go
@@ -151,8 +151,8 @@ type MasterSpec struct {
 	ExternalEndpoint ExternalEndpointSpec `json:"endpoint,omitempty"`
 }
 
-// VineyardSockSpec holds the configurations for vineyard client socket
-type VineyardSockSpec struct {
+// VineyardClientSocketSpec holds the configurations for vineyard client socket
+type VineyardClientSocketSpec struct {
 	// Image for Vineyard Fuse
 	// Default is `vineyardcloudnative/vineyard-fluid-fuse`
 	// +optional
@@ -196,6 +196,42 @@ type VineyardSockSpec struct {
 	// PodMetadata defines labels and annotations that will be propagated to Vineyard's pods.
 	// +optional
 	PodMetadata PodMetadata `json:"podMetadata,omitempty"`
+
+	// Options for configuring vineyardd parameters.
+	// Supported options are as follows.
+	//   reserve_memory: (Bool) Whether to reserving enough physical memory pages for vineyardd.
+	//                   Default is true.
+	//   allocator: (String) The allocator used by vineyardd, could be "dlmalloc" or "mimalloc".
+	//              Default is "dlmalloc".
+	//   compression: (Bool) Compress before migration or spilling.
+	//                Default is true.
+	//   coredump: (Bool) Enable coredump core dump when been aborted.
+	//             Default is false.
+	//   meta_timeout: (Int) Timeout period before waiting the metadata service to be ready, in seconds
+	//				   Default is 60.
+	//   etcd_endpoint: (String) The endpoint of etcd.
+	//                  Default is same as the etcd endpoint of vineyard worker.
+	//   etcd_prefix: (String) Metadata path prefix in etcd.
+	//                Default is "/vineyard".
+	//   size: (String) shared memory size for vineyardd.
+	//                  1024M, 1024000, 1G, or 1Gi.
+	//                  Default is "0", which means no cache.
+	//                  When the size is not set to "0", it should be greater than the 2048 bytes(2K).
+	//   spill_path: (String) Path to spill temporary files, if not set, spilling will be disabled.
+	//               Default is "".
+	//   spill_lower_rate: (Double) The lower rate of memory usage to trigger spilling.
+	//					   Default is 0.3.
+	//   spill_upper_rate: (Double) The upper rate of memory usage to stop spilling.
+	//					   Default is 0.8.
+	// Default is as follows.
+	// fuse:
+	//   options:
+	//     size: "0"
+	//     etcd_endpoint: "http://{{Name}}-master-0.{{Name}}-master.{{Namespace}}:{{EtcdClientPort}}"
+	//	   etcd_prefix: "/vineyard"
+	//
+	// +optional
+	Options map[string]string `json:"options,omitempty"`
 }
 
 // VineyardRuntimeSpec defines the desired state of VineyardRuntime
@@ -220,7 +256,7 @@ type VineyardRuntimeSpec struct {
 	// IPC is the default way to connect to vineyard runtime components, which is more efficient than RPC.
 	// If the socket file is not mounted, the connection will fall back to RPC.
 	// +optional
-	Fuse VineyardSockSpec `json:"fuse,omitempty"`
+	Fuse VineyardClientSocketSpec `json:"fuse,omitempty"`
 
 	// Tiered storage used by vineyardd
 	// The MediumType can only be `MEM` and `SSD`
diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go
index 52e1a9c9..e1aae252 100644
--- a/api/v1alpha1/zz_generated.deepcopy.go
+++ b/api/v1alpha1/zz_generated.deepcopy.go
@@ -2831,6 +2831,37 @@ func (in *VersionSpec) DeepCopy() *VersionSpec {
 	return out
 }
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *VineyardClientSocketSpec) DeepCopyInto(out *VineyardClientSocketSpec) {
+	*out = *in
+	if in.Env != nil {
+		in, out := &in.Env, &out.Env
+		*out = make(map[string]string, len(*in))
+		for key, val := range *in {
+			(*out)[key] = val
+		}
+	}
+	in.Resources.DeepCopyInto(&out.Resources)
+	in.PodMetadata.DeepCopyInto(&out.PodMetadata)
+	if in.Options != nil {
+		in, out := &in.Options, &out.Options
+		*out = make(map[string]string, len(*in))
+		for key, val := range *in {
+			(*out)[key] = val
+		}
+	}
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VineyardClientSocketSpec.
+func (in *VineyardClientSocketSpec) DeepCopy() *VineyardClientSocketSpec {
+	if in == nil {
+		return nil
+	}
+	out := new(VineyardClientSocketSpec)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *VineyardCompTemplateSpec) DeepCopyInto(out *VineyardCompTemplateSpec) {
 	*out = *in
@@ -2969,30 +3000,6 @@ func (in *VineyardRuntimeSpec) DeepCopy() *VineyardRuntimeSpec {
 	return out
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *VineyardSockSpec) DeepCopyInto(out *VineyardSockSpec) {
-	*out = *in
-	if in.Env != nil {
-		in, out := &in.Env, &out.Env
-		*out = make(map[string]string, len(*in))
-		for key, val := range *in {
-			(*out)[key] = val
-		}
-	}
-	in.Resources.DeepCopyInto(&out.Resources)
-	in.PodMetadata.DeepCopyInto(&out.PodMetadata)
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VineyardSockSpec.
-func (in *VineyardSockSpec) DeepCopy() *VineyardSockSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(VineyardSockSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *VolumeSource) DeepCopyInto(out *VolumeSource) {
 	*out = *in
diff --git a/charts/fluid/fluid/Chart.yaml b/charts/fluid/fluid/Chart.yaml
index 24c25fd4..266e1561 100644
--- a/charts/fluid/fluid/Chart.yaml
+++ b/charts/fluid/fluid/Chart.yaml
@@ -18,7 +18,7 @@ version: 1.0.1
 
 # This is the version number of the application being deployed. This version number should be
 # incremented each time you make changes to the application.
-appVersion: 1.0.1-1be5869
+appVersion: 1.0.1-a3c7b09
 home: https://github.com/fluid-cloudnative/fluid
 keywords:
   - category:data
diff --git a/charts/fluid/fluid/crds/data.fluid.io_vineyardruntimes.yaml b/charts/fluid/fluid/crds/data.fluid.io_vineyardruntimes.yaml
index 07dc3055..c724b36f 100644
--- a/charts/fluid/fluid/crds/data.fluid.io_vineyardruntimes.yaml
+++ b/charts/fluid/fluid/crds/data.fluid.io_vineyardruntimes.yaml
@@ -122,6 +122,32 @@ spec:
                     - ""
                     - ContainerNetwork
                     type: string
+                  options:
+                    additionalProperties:
+                      type: string
+                    description: 'Options for configuring vineyardd parameters. Supported
+                      options are as follows. reserve_memory: (Bool) Whether to reserving
+                      enough physical memory pages for vineyardd. Default is true.
+                      allocator: (String) The allocator used by vineyardd, could be
+                      "dlmalloc" or "mimalloc". Default is "dlmalloc". compression:
+                      (Bool) Compress before migration or spilling. Default is true.
+                      coredump: (Bool) Enable coredump core dump when been aborted.
+                      Default is false. meta_timeout: (Int) Timeout period before
+                      waiting the metadata service to be ready, in seconds Default
+                      is 60. etcd_endpoint: (String) The endpoint of etcd. Default
+                      is same as the etcd endpoint of vineyard worker. etcd_prefix:
+                      (String) Metadata path prefix in etcd. Default is "/vineyard".
+                      size: (String) shared memory size for vineyardd. 1024M, 1024000,
+                      1G, or 1Gi. Default is "0", which means no cache. When the size
+                      is not set to "0", it should be greater than the 2048 bytes(2K).
+                      spill_path: (String) Path to spill temporary files, if not set,
+                      spilling will be disabled. Default is "". spill_lower_rate:
+                      (Double) The lower rate of memory usage to trigger spilling.
+                      Default is 0.3. spill_upper_rate: (Double) The upper rate of
+                      memory usage to stop spilling. Default is 0.8. Default is as
+                      follows. fuse: options: size: "0" etcd_endpoint: "http://{{Name}}-master-0.{{Name}}-master.{{Namespace}}:{{EtcdClientPort}}"
+                      etcd_prefix: "/vineyard"'
+                    type: object
                   podMetadata:
                     description: PodMetadata defines labels and annotations that will
                       be propagated to Vineyard's pods.
diff --git a/charts/fluid/fluid/templates/_helpers.tpl b/charts/fluid/fluid/templates/_helpers.tpl
index fe5531c5..7ac641e1 100644
--- a/charts/fluid/fluid/templates/_helpers.tpl
+++ b/charts/fluid/fluid/templates/_helpers.tpl
@@ -93,3 +93,21 @@ Create the name of the service account to use
     - delete
 {{- end -}}
 {{- end -}}
+
+
+{{/*
+Check if feature gate DataflowAffinity is enabled in the featureGates.
+*/}}
+{{- define "fluid.dataflowAffinity.enabled" -}}
+{{- $featureGates := splitList "," .Values.dataset.featureGates }}
+{{- $found := false -}}
+{{- range $idx, $featureGate := $featureGates }}
+    {{- $featureGateKV := splitList "=" $featureGate }}
+    {{- $key :=  trim (index $featureGateKV 0) }}
+    {{- $value := trim (index $featureGateKV 1) }}
+    {{- if and (eq $key "DataflowAffinity") (eq $value "true") -}}
+        {{- $found = true -}}
+    {{- end -}}
+{{- end -}}
+{{- $found -}}
+{{- end -}}
diff --git a/charts/fluid/fluid/templates/controller/dataset_controller.yaml b/charts/fluid/fluid/templates/controller/dataset_controller.yaml
index 4071fb25..ceacd8bd 100644
--- a/charts/fluid/fluid/templates/controller/dataset_controller.yaml
+++ b/charts/fluid/fluid/templates/controller/dataset_controller.yaml
@@ -50,6 +50,7 @@ spec:
           - --pprof-addr=:6060
           - --enable-leader-election
           - --leader-election-namespace={{ include "fluid.namespace" . }}
+          - --feature-gates={{ .Values.dataset.featureGates }}
         env:
           {{- if .Values.workdir }}
           - name: FLUID_WORKDIR
diff --git a/charts/fluid/fluid/templates/role/dataset/rbac.yaml b/charts/fluid/fluid/templates/role/dataset/rbac.yaml
index 38374e2a..df1f70fe 100644
--- a/charts/fluid/fluid/templates/role/dataset/rbac.yaml
+++ b/charts/fluid/fluid/templates/role/dataset/rbac.yaml
@@ -13,6 +13,7 @@ rules:
     - get
     - list
     - watch
+  {{- if eq (include "fluid.dataflowAffinity.enabled" . ) "true" }}
   - apiGroups:
       - ""
     resources:
@@ -21,6 +22,7 @@ rules:
       - get
       - list
       - watch
+  {{- end }}
   - apiGroups:
     - ""
     resources:
diff --git a/charts/fluid/fluid/values.yaml b/charts/fluid/fluid/values.yaml
index 62fe1174..ca0ea36d 100644
--- a/charts/fluid/fluid/values.yaml
+++ b/charts/fluid/fluid/values.yaml
@@ -12,7 +12,7 @@ crdUpgrade:
   enabled: true
   # This sets the time-to-live (TTL) for crd-upgrade jobs. Default is 259200 seconds (3 days).
   ttlSecondsAfterFinished: 259200 
-  image: fluidcloudnative/fluid-crd-upgrader:v1.0.1-1be5869
+  image: fluidcloudnative/fluid-crd-upgrader:v1.0.1-a3c7b09
 
 ##  if unspecified, will use built-in variable `.Release.Namespace`.
 namespace: fluid-system
@@ -25,7 +25,8 @@ dataset:
   tolerations:
     - operator: Exists
   controller:
-    image: fluidcloudnative/dataset-controller:v1.0.1-1be5869
+    image: fluidcloudnative/dataset-controller:v1.0.1-a3c7b09
+  featureGates: "DataflowAffinity=false"
 
 csi:
   tolerations:
@@ -36,7 +37,7 @@ csi:
   registrar:
     image: fluidcloudnative/csi-node-driver-registrar:v2.3.0
   plugins:
-    image: fluidcloudnative/fluid-csi:v1.0.1-1be5869
+    image: fluidcloudnative/fluid-csi:v1.0.1-a3c7b09
   kubelet:
     kubeConfigFile: /etc/kubernetes/kubelet.conf
     certDir: /var/lib/kubelet/pki
@@ -63,7 +64,7 @@ runtime:
     init:
       image: fluidcloudnative/init-users:v0.9.0
     controller:
-      image: fluidcloudnative/alluxioruntime-controller:v1.0.1-1be5869
+      image: fluidcloudnative/alluxioruntime-controller:v1.0.1-a3c7b09
     runtime:
       image: alluxio/alluxio-dev:2.9.0
     fuse:
@@ -80,11 +81,11 @@ runtime:
     engine: jindocache
     queryUfsTotal: true
     smartdata:
-      image: registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.2.0
+      image: registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.4.0
     fuse:
-      image: registry.cn-shanghai.aliyuncs.com/jindofs/jindo-fuse:6.2.0
+      image: registry.cn-shanghai.aliyuncs.com/jindofs/jindo-fuse:6.4.0
     controller:
-      image: fluidcloudnative/jindoruntime-controller:v1.0.1-1be5869
+      image: fluidcloudnative/jindoruntime-controller:v1.0.1-a3c7b09
     init:
       portCheck:
         enabled: false
@@ -100,7 +101,7 @@ runtime:
     init:
       image: fluidcloudnative/init-users:v0.9.0
     controller:
-      image: fluidcloudnative/goosefsruntime-controller:v1.0.1-1be5869
+      image: fluidcloudnative/goosefsruntime-controller:v1.0.1-a3c7b09
     runtime:
       image: ccr.ccs.tencentyun.com/qcloud/goosefs:v1.2.0
     fuse:
@@ -112,7 +113,7 @@ runtime:
     enabled: false
     runtimeWorkers: 3
     controller:
-      image: fluidcloudnative/juicefsruntime-controller:v1.0.1-1be5869
+      image: fluidcloudnative/juicefsruntime-controller:v1.0.1-a3c7b09
     fuse:
       ceimage: juicedata/juicefs-fuse:ce-v1.1.0-rc1
       eeimage: juicedata/juicefs-fuse:ee-4.9.16
@@ -122,7 +123,7 @@ runtime:
       - operator: Exists
     enabled: false
     controller:
-      image: fluidcloudnative/thinruntime-controller:v1.0.1-1be5869
+      image: fluidcloudnative/thinruntime-controller:v1.0.1-a3c7b09
     fuse:
       configStorage: configmap
   efc:
@@ -131,7 +132,7 @@ runtime:
       - operator: Exists
     enabled: false
     controller:
-      image: fluidcloudnative/efcruntime-controller:v1.0.1-1be5869
+      image: fluidcloudnative/efcruntime-controller:v1.0.1-a3c7b09
       imagePullPolicy: Always
     init:
       image: registry.cn-zhangjiakou.aliyuncs.com/nascache/init-alifuse:v1.2.2-19dcee9
@@ -148,7 +149,7 @@ runtime:
       - operator: Exists
     enabled: false
     controller:
-      image: fluidcloudnative/vineyardruntime-controller:v1.0.1-1be5869
+      image: fluidcloudnative/vineyardruntime-controller:v1.0.1-a3c7b09
       imagePullPolicy: Always
     master:
       image: bitnami/etcd:3.5.10
@@ -159,7 +160,7 @@ runtime:
 
 webhook:
   enabled: true
-  image: fluidcloudnative/fluid-webhook:v1.0.1-1be5869
+  image: fluidcloudnative/fluid-webhook:v1.0.1-a3c7b09
   replicas: 1
   timeoutSeconds: 15
   reinvocationPolicy: IfNeeded
@@ -209,4 +210,4 @@ fluidapp:
   tolerations:
     - operator: Exists
   controller:
-    image: fluidcloudnative/application-controller:v1.0.1-1be5869
+    image: fluidcloudnative/application-controller:v1.0.1-a3c7b09
diff --git a/charts/jindocache/CHANGELOG.md b/charts/jindocache/CHANGELOG.md
index 915b8673..27738c0e 100644
--- a/charts/jindocache/CHANGELOG.md
+++ b/charts/jindocache/CHANGELOG.md
@@ -108,3 +108,8 @@ Fix worker's annotations for pod spec overwrites master's annotations
 1.0.2
 Delete runtime's fsGroup
 Mount ufs volumes according to dataset's accessModes
+
+1.0.3
+Fix random read cache block error problem with small probability
+Support write cache to different node with one iostream
+Support rdma network
\ No newline at end of file
diff --git a/charts/jindocache/Chart.yaml b/charts/jindocache/Chart.yaml
index 40744b91..c169ffd4 100755
--- a/charts/jindocache/Chart.yaml
+++ b/charts/jindocache/Chart.yaml
@@ -1,5 +1,5 @@
 apiVersion: v2
-appVersion: 6.2.0
+appVersion: 6.4.0
 version: 1.0.0
 description: FileSystem on the cloud based on Aliyun Object Storage aimed for data
   acceleration.
diff --git a/charts/jindocache/values.yaml b/charts/jindocache/values.yaml
index ab52049d..97229fee 100644
--- a/charts/jindocache/values.yaml
+++ b/charts/jindocache/values.yaml
@@ -4,7 +4,7 @@
 
 
 image: registry-vpc.__ACK_REGION_ID__.aliyuncs.com/jindo/smartdata
-imageTag: "6.2.0"
+imageTag: "6.4.0"
 imagePullPolicy: Always
 
 initPortCheck:
@@ -15,7 +15,7 @@ initPortCheck:
   portsToCheck: ""
 
 fuseImage: registry-vpc.__ACK_REGION_ID__.aliyuncs.com/jindo/jindo-fuse
-fuseImageTag: "6.2.0"
+fuseImageTag: "6.4.0"
 fuseImagePullPolicy: "Always"
 
 user: 0
diff --git a/charts/vineyard/templates/fuse/daemonset.yaml b/charts/vineyard/templates/fuse/daemonset.yaml
index e6c9b5a0..f2b533b7 100644
--- a/charts/vineyard/templates/fuse/daemonset.yaml
+++ b/charts/vineyard/templates/fuse/daemonset.yaml
@@ -90,6 +90,10 @@ spec:
             value: {{ .Values.fuse.targetPath }}/rpc-conf
           - name: PRESTOP_MARKER
             value: /tmp/prestop-marker
+          {{- range $key, $value := .Values.fuse.options }}
+          - name: "{{ upper $key }}"
+            value: "{{ $value }}"
+          {{- end }}
           {{- range $key, $value := .Values.fuse.env }}
           - name: "{{ $key }}"
             value: "{{ $value }}"
diff --git a/charts/vineyard/templates/worker/statefulset.yaml b/charts/vineyard/templates/worker/statefulset.yaml
index ff85855d..6189503d 100644
--- a/charts/vineyard/templates/worker/statefulset.yaml
+++ b/charts/vineyard/templates/worker/statefulset.yaml
@@ -86,7 +86,7 @@ spec:
           command:
             - /usr/local/bin/vineyardd
             - --socket
-            - /var/run/vineyard/vineyard.sock
+            - /var/run/vineyard/vineyard-worker.sock
             - --size
             - "{{ include "vineyard.worker.size" . }}"
             {{- if eq (toString (index .Values.worker.options "vineyardd.reserve.memory")) "true" }}
@@ -111,6 +111,10 @@ spec:
             - --log_dir
             - /var/log/vineyard
             {{- end }}
+          lifecycle:
+            preStop:
+              exec:
+                command: ["sh", "-c", "rm -f /var/run/vineyard/vineyard-worker.sock"]
           env:
           - name: VINEYARDD_NAME
             value: {{ template "vineyard.fullname" . }}-vineyardd
@@ -163,7 +167,7 @@ spec:
             exec:
               command:
               - ls
-              - /var/run/vineyard/vineyard.sock
+              - /var/run/vineyard/vineyard-worker.sock
             initialDelaySeconds: 15
             periodSeconds: 10
             failureThreshold: 10
diff --git a/charts/vineyard/values.yaml b/charts/vineyard/values.yaml
index 4ff5a773..f395ff73 100644
--- a/charts/vineyard/values.yaml
+++ b/charts/vineyard/values.yaml
@@ -133,6 +133,8 @@ fuse:
   targetPath: ""
   nodeSelector: {}
   hostPID: false
+  options:
+    size: "0"
 
 owner:
   enabled: false
diff --git a/cmd/dataset/app/dataset.go b/cmd/dataset/app/dataset.go
index 064a06ab..169abce3 100644
--- a/cmd/dataset/app/dataset.go
+++ b/cmd/dataset/app/dataset.go
@@ -17,6 +17,7 @@ limitations under the License.
 package app
 
 import (
+	utilfeature "github.com/fluid-cloudnative/fluid/pkg/utils/feature"
 	"os"
 	"time"
 
@@ -100,6 +101,8 @@ func init() {
 	datasetCmd.Flags().StringVar(&controllerWorkqueueMaxSyncBackoffStr, "workqueue-max-sync-backoff", "1000s", "max backoff period for failed reconciliation in controller's workqueue")
 	datasetCmd.Flags().IntVar(&controllerWorkqueueQPS, "workqueue-qps", 10, "qps limit value for controller's workqueue")
 	datasetCmd.Flags().IntVar(&controllerWorkqueueBurst, "workqueue-burst", 100, "burst limit value for controller's workqueue")
+
+	utilfeature.DefaultMutableFeatureGate.AddFlag(datasetCmd.Flags())
 }
 
 func handle() {
diff --git a/cmd/goosefs/app/version.go b/cmd/goosefs/app/version.go
index 0713e52a..c1003351 100644
--- a/cmd/goosefs/app/version.go
+++ b/cmd/goosefs/app/version.go
@@ -1,9 +1,11 @@
 /*
+Copyright 2021 The Fluid Authors.
+
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-	http://www.apache.org/licenses/LICENSE-2.0
+    http://www.apache.org/licenses/LICENSE-2.0
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -11,6 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 */
+
 package app
 
 import (
diff --git a/cmd/jindo/app/jindo.go b/cmd/jindo/app/jindo.go
index 2dea91e9..786db05e 100644
--- a/cmd/jindo/app/jindo.go
+++ b/cmd/jindo/app/jindo.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2021 The Fluid Authors.
+Copyright 2022 The Fluid Authors.
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/config/crd/bases/data.fluid.io_vineyardruntimes.yaml b/config/crd/bases/data.fluid.io_vineyardruntimes.yaml
index 07dc3055..c724b36f 100644
--- a/config/crd/bases/data.fluid.io_vineyardruntimes.yaml
+++ b/config/crd/bases/data.fluid.io_vineyardruntimes.yaml
@@ -122,6 +122,32 @@ spec:
                     - ""
                     - ContainerNetwork
                     type: string
+                  options:
+                    additionalProperties:
+                      type: string
+                    description: 'Options for configuring vineyardd parameters. Supported
+                      options are as follows. reserve_memory: (Bool) Whether to reserving
+                      enough physical memory pages for vineyardd. Default is true.
+                      allocator: (String) The allocator used by vineyardd, could be
+                      "dlmalloc" or "mimalloc". Default is "dlmalloc". compression:
+                      (Bool) Compress before migration or spilling. Default is true.
+                      coredump: (Bool) Enable coredump core dump when been aborted.
+                      Default is false. meta_timeout: (Int) Timeout period before
+                      waiting the metadata service to be ready, in seconds Default
+                      is 60. etcd_endpoint: (String) The endpoint of etcd. Default
+                      is same as the etcd endpoint of vineyard worker. etcd_prefix:
+                      (String) Metadata path prefix in etcd. Default is "/vineyard".
+                      size: (String) shared memory size for vineyardd. 1024M, 1024000,
+                      1G, or 1Gi. Default is "0", which means no cache. When the size
+                      is not set to "0", it should be greater than the 2048 bytes(2K).
+                      spill_path: (String) Path to spill temporary files, if not set,
+                      spilling will be disabled. Default is "". spill_lower_rate:
+                      (Double) The lower rate of memory usage to trigger spilling.
+                      Default is 0.3. spill_upper_rate: (Double) The upper rate of
+                      memory usage to stop spilling. Default is 0.8. Default is as
+                      follows. fuse: options: size: "0" etcd_endpoint: "http://{{Name}}-master-0.{{Name}}-master.{{Namespace}}:{{EtcdClientPort}}"
+                      etcd_prefix: "/vineyard"'
+                    type: object
                   podMetadata:
                     description: PodMetadata defines labels and annotations that will
                       be propagated to Vineyard's pods.
diff --git a/docs/en/dev/api_doc.md b/docs/en/dev/api_doc.md
index a8a98c29..fa854f51 100644
--- a/docs/en/dev/api_doc.md
+++ b/docs/en/dev/api_doc.md
@@ -2392,8 +2392,8 @@ If worker.replicas and the field are both specified, the field will be respected
 <td>
 <code>fuse</code></br>
 <em>
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">
-VineyardSockSpec
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">
+VineyardClientSocketSpec
 </a>
 </em>
 </td>
@@ -5293,7 +5293,7 @@ string
 <a href="#data.fluid.io/v1alpha1.JindoFuseSpec">JindoFuseSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.JuiceFSFuseSpec">JuiceFSFuseSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.ThinFuseSpec">ThinFuseSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec</a>)
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec</a>)
 </p>
 <p>
 </p>
@@ -7516,8 +7516,8 @@ bool
 <a href="#data.fluid.io/v1alpha1.JuiceFSFuseSpec">JuiceFSFuseSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.ThinCompTemplateSpec">ThinCompTemplateSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.ThinFuseSpec">ThinFuseSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec</a>)
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec</a>, 
+<a href="#data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec</a>)
 </p>
 <p>
 </p>
@@ -7806,9 +7806,9 @@ Kubernetes core/v1.NodeAffinity
 <a href="#data.fluid.io/v1alpha1.JuiceFSRuntimeSpec">JuiceFSRuntimeSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.Metadata">Metadata</a>, 
 <a href="#data.fluid.io/v1alpha1.Processor">Processor</a>, 
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec</a>)
+<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>)
 </p>
 <p>
 <p>PodMetadata defines subgroup properties of metav1.ObjectMeta</p>
@@ -9977,6 +9977,183 @@ string
 </tr>
 </tbody>
 </table>
+<h3 id="data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>)
+</p>
+<p>
+<p>VineyardClientSocketSpec holds the configurations for vineyard client socket</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>image</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Image for Vineyard Fuse
+Default is <code>vineyardcloudnative/vineyard-fluid-fuse</code></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>imageTag</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Image Tag for Vineyard Fuse
+Default is <code>v0.21.5</code></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>imagePullPolicy</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Image pull policy for Vineyard Fuse
+Default is <code>IfNotPresent</code>
+Available values are <code>Always</code>, <code>IfNotPresent</code>, <code>Never</code></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>env</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Environment variables that will be used by Vineyard Fuse.
+Default is not set.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>cleanPolicy</code></br>
+<em>
+<a href="#data.fluid.io/v1alpha1.FuseCleanPolicy">
+FuseCleanPolicy
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>CleanPolicy decides when to clean Vineyard Fuse pods.
+Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted
+OnDemand cleans fuse pod once th fuse pod on some node is not needed
+OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted
+Defaults to OnRuntimeDeleted</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>resources</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#resourcerequirements-v1-core">
+Kubernetes core/v1.ResourceRequirements
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Resources contains the resource requirements and limits for the Vineyard Fuse.
+Default is not set.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>networkMode</code></br>
+<em>
+<a href="#data.fluid.io/v1alpha1.NetworkMode">
+NetworkMode
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Whether to use hostnetwork or not
+Default is HostNetwork</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>podMetadata</code></br>
+<em>
+<a href="#data.fluid.io/v1alpha1.PodMetadata">
+PodMetadata
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>PodMetadata defines labels and annotations that will be propagated to Vineyard&rsquo;s pods.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>options</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Options for configuring vineyardd parameters.
+Supported options are as follows.
+reserve_memory: (Bool) Whether to reserving enough physical memory pages for vineyardd.
+Default is true.
+allocator: (String) The allocator used by vineyardd, could be &ldquo;dlmalloc&rdquo; or &ldquo;mimalloc&rdquo;.
+Default is &ldquo;dlmalloc&rdquo;.
+compression: (Bool) Compress before migration or spilling.
+Default is true.
+coredump: (Bool) Enable coredump core dump when been aborted.
+Default is false.
+meta_timeout: (Int) Timeout period before waiting the metadata service to be ready, in seconds
+Default is 60.
+etcd_endpoint: (String) The endpoint of etcd.
+Default is same as the etcd endpoint of vineyard worker.
+etcd_prefix: (String) Metadata path prefix in etcd.
+Default is &ldquo;/vineyard&rdquo;.
+size: (String) shared memory size for vineyardd.
+1024M, 1024000, 1G, or 1Gi.
+Default is &ldquo;0&rdquo;, which means no cache.
+When the size is not set to &ldquo;0&rdquo;, it should be greater than the 2048 bytes(2K).
+spill_path: (String) Path to spill temporary files, if not set, spilling will be disabled.
+Default is &ldquo;&rdquo;.
+spill_lower_rate: (Double) The lower rate of memory usage to trigger spilling.
+Default is 0.3.
+spill_upper_rate: (Double) The upper rate of memory usage to stop spilling.
+Default is 0.8.
+Default is as follows.
+fuse:
+options:
+size: &ldquo;0&rdquo;
+etcd_endpoint: &ldquo;http://{{Name}}-master-0.{{Name}}-master.{{Namespace}}:{{EtcdClientPort}}&rdquo;
+etcd_prefix: &ldquo;/vineyard&rdquo;</p>
+</td>
+</tr>
+</tbody>
+</table>
 <h3 id="data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec
 </h3>
 <p>
@@ -10243,8 +10420,8 @@ If worker.replicas and the field are both specified, the field will be respected
 <td>
 <code>fuse</code></br>
 <em>
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">
-VineyardSockSpec
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">
+VineyardClientSocketSpec
 </a>
 </em>
 </td>
@@ -10337,140 +10514,6 @@ Default is null.</p>
 </tr>
 </tbody>
 </table>
-<h3 id="data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec
-</h3>
-<p>
-(<em>Appears on:</em>
-<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>)
-</p>
-<p>
-<p>VineyardSockSpec holds the configurations for vineyard client socket</p>
-</p>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>image</code></br>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Image for Vineyard Fuse
-Default is <code>vineyardcloudnative/vineyard-fluid-fuse</code></p>
-</td>
-</tr>
-<tr>
-<td>
-<code>imageTag</code></br>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Image Tag for Vineyard Fuse
-Default is <code>v0.21.5</code></p>
-</td>
-</tr>
-<tr>
-<td>
-<code>imagePullPolicy</code></br>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Image pull policy for Vineyard Fuse
-Default is <code>IfNotPresent</code>
-Available values are <code>Always</code>, <code>IfNotPresent</code>, <code>Never</code></p>
-</td>
-</tr>
-<tr>
-<td>
-<code>env</code></br>
-<em>
-map[string]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Environment variables that will be used by Vineyard Fuse.
-Default is not set.</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>cleanPolicy</code></br>
-<em>
-<a href="#data.fluid.io/v1alpha1.FuseCleanPolicy">
-FuseCleanPolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>CleanPolicy decides when to clean Vineyard Fuse pods.
-Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted
-OnDemand cleans fuse pod once th fuse pod on some node is not needed
-OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted
-Defaults to OnRuntimeDeleted</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>resources</code></br>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#resourcerequirements-v1-core">
-Kubernetes core/v1.ResourceRequirements
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Resources contains the resource requirements and limits for the Vineyard Fuse.
-Default is not set.</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>networkMode</code></br>
-<em>
-<a href="#data.fluid.io/v1alpha1.NetworkMode">
-NetworkMode
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Whether to use hostnetwork or not
-Default is HostNetwork</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>podMetadata</code></br>
-<em>
-<a href="#data.fluid.io/v1alpha1.PodMetadata">
-PodMetadata
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>PodMetadata defines labels and annotations that will be propagated to Vineyard&rsquo;s pods.</p>
-</td>
-</tr>
-</tbody>
-</table>
 <h3 id="data.fluid.io/v1alpha1.VolumeSource">VolumeSource
 </h3>
 <p>
diff --git a/docs/en/samples/vineyard/configure_cache_size_of_vineyard_fuse.md b/docs/en/samples/vineyard/configure_cache_size_of_vineyard_fuse.md
new file mode 100644
index 00000000..3a377d49
--- /dev/null
+++ b/docs/en/samples/vineyard/configure_cache_size_of_vineyard_fuse.md
@@ -0,0 +1,218 @@
+## How to configure the cache size of Vineyard Fuse
+
+Before you begin, we'd better have a basic understanding of the [Vineyard Fuse](https://github.com/v6d-io/v6d/tree/main/docker/vineyard-fluid-fuse). It mainly creates the vineyard client configurations in the application pod and defines the priority of different vineyard sockets.
+
+For example, suppose we have enabled the cache of vineyard fuse, a local vineyardd will be started in the fuse container, and it will connect to the vineyard master. The new vineyardd will create a vineyard socket named `vineyard-local.sock` in the pod, and the vineyard fuse will also create the symbolic link `vineyard-worker.sock` to pod if the fuse pod runs on the same node as the vineyard worker. In this case, we will put the vineyard socket `vineyard-local.sock` in the first place in the vineyard client configurations YAML. When the application connects to the vineyard, it will first try to put and get data from the local vineyardd. If it's out of memory, it will fall back to the vineyard worker. Thus, we can regard the vineyard fuse as a local cache of the external vineyard workers.
+
+## Install fluid
+
+Refer to the [Installation Documentation](../../userguide/install.md) to complete the installation.
+
+## Create Vineyard Runtime and set the fuse cache size to 0
+
+If you don't set the cache size of vineyard fuse, the default value is 0. To make it
+clear, we set the cache size to 0 explicitly.
+
+```shell
+$ cat <<EOF | kubectl apply -f -
+apiVersion: data.fluid.io/v1alpha1
+kind: VineyardRuntime
+metadata:
+  name: vineyard
+spec:
+  replicas: 2
+  tieredstore:
+    levels:
+    - mediumtype: MEM
+      quota: 20Gi
+  fuse:
+    options:
+      # Not to start the local vineyardd in the vineyard fuse container
+      size: "0"
+---
+apiVersion: data.fluid.io/v1alpha1
+kind: Dataset
+metadata:
+  name: vineyard
+EOF
+```
+
+Check if the `Vineyard Runtime` is created successfully:
+
+```shell
+$ kubectl get vineyardRuntime vineyard 
+NAME       MASTER PHASE   WORKER PHASE   FUSE PHASE   AGE
+vineyard   Ready          PartialReady   Ready        59s
+```
+
+Then look at the status of the `Vineyard Dataset` and notice that it has been bound to the `Vineyard Runtime`:
+
+```shell
+$ kubectl get dataset vineyard
+NAME       UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
+vineyard                                                                  Bound   73s
+```
+
+### [Serverful Mode] Create an Application Pod and Mount the Vineyard Dataset
+
+Add the label `fuse.serverful.fluid.io/inject: "true"` to make the pod scheduled to the node where the vineyard worker is running.
+
+```shell
+$ cat <<EOF | kubectl apply -f -
+apiVersion: v1
+kind: Pod
+metadata:
+  name: demo-app
+  labels:
+    fuse.serverful.fluid.io/inject: "true"
+spec:
+  containers:
+    - name: demo
+      image: python:3.10
+      command:
+        - /bin/bash
+        - -c
+        - |
+          pip3 install vineyard;
+          sleep infinity
+      volumeMounts:
+        - mountPath: /var/run/vineyard
+          name: client-configuration
+  volumes:
+    - name: client-configuration
+      persistentVolumeClaim:
+        claimName: vineyard
+EOF
+```
+
+Then we can check the client configurations in the pod, and notice there is only one vineyard socket named `vineyard-worker.sock`.
+
+```shell
+$ kubectl exec -it demo-app -- ls /var/run/vineyard
+rpc-conf  vineyard-config.yaml  vineyard-worker.sock
+
+$ kubectl exec -it demo-app -- cat /var/run/vineyard/vineyard-config.yaml                    
+Vineyard:
+  IPCSocket: vineyard-worker.sock
+  RPCEndpoint: vineyard-worker-0.vineyard-worker.default:9600,vineyard-worker-1.vineyard-worker.default:9600
+```
+
+Connect to the vineyard worker in the pod.
+
+```shell
+$  kubectl exec -it demo-app -- python
+Python 3.10.14 (main, Mar 25 2024, 21:45:25) [GCC 12.2.0] on linux
+Type "help", "copyright", "credits" or "license" for more information.
+>>> import vineyard
+>>> client = vineyard.connect()
+>>> client.status
+{
+    instance_id: 0,
+    deployment: local,
+    memory_usage: 0,
+    memory_limit: 21474836480,
+    deferred_requests: 0,
+    ipc_connections: 0,
+    rpc_connections: 1
+}
+```
+
+## Create Vineyard Runtime and set the fuse cache size to 1Gi
+
+Add the option `size: "1Gi"` to enable the cache of vineyard fuse and set the cache size to 1Gi.
+
+```shell
+$ cat <<EOF | kubectl apply -f -
+apiVersion: data.fluid.io/v1alpha1
+kind: VineyardRuntime
+metadata:
+  name: vineyard-with-fuse-cache
+spec:
+  replicas: 2
+  tieredstore:
+    levels:
+    - mediumtype: MEM
+      quota: 20Gi
+  fuse:
+    options:
+      # Start the local vineyardd with 1Gi memory in the vineyard fuse container
+      size: "1Gi"
+---
+apiVersion: data.fluid.io/v1alpha1
+kind: Dataset
+metadata:
+  name: vineyard-with-fuse-cache
+EOF
+```
+
+### [Serverful Mode] Create an Application Pod and Mount the Vineyard Dataset
+
+```shell
+$ cat <<EOF | kubectl apply -f -
+apiVersion: v1
+kind: Pod
+metadata:
+  name: demo-app
+  labels:
+    fuse.serverful.fluid.io/inject: "true"
+spec:
+  containers:
+    - name: demo
+      image: python:3.10
+      command:
+        - /bin/bash
+        - -c
+        - |
+          pip3 install vineyard;
+          sleep infinity
+      volumeMounts:
+        - mountPath: /var/run/vineyard
+          name: client-configuration
+  volumes:
+    - name: client-configuration
+      persistentVolumeClaim:
+        claimName: vineyard-with-fuse-cache
+EOF
+```
+
+Check the status of Vineyard FUSE:
+
+```shell
+$ kubectl get po | grep vineyard-with-fuse-cache-fuse
+vineyard-with-fuse-cache-fuse-chd9w   1/1     Running   0          110s
+```
+
+Then we can check the client configurations in the pod, and notice there are two vineyard sockets named `vineyard-local.sock` and `vineyard-worker.sock`. In the client
+configurations YAML, the `vineyard-local.sock` is in the first place, which means the application will first try to put and get data from the local vineyardd.
+
+```shell
+$ kubectl exec -it demo-app -- ls /var/run/vineyard
+rpc-conf  vineyard-config.yaml  vineyard-local.sock  vineyard-worker.sock
+
+# Check the vineyard client configurations
+$ kubectl exec -it demo-app -- cat /var/run/vineyard/vineyard-config.yaml                    
+Vineyard:
+  IPCSocket: vineyard-local.sock
+  RPCEndpoint: vineyard-with-fuse-cache-worker-0.vineyard-with-fuse-cache-worker.default:9600,vineyard-with-fuse-cache-worker-1.vineyard-with-fuse-cache-worker.default:9600
+```
+
+We can find if we connect to the vineyard with the default configurations, the local
+vineyardd will be used first.
+
+```shell
+$  kubectl exec -it demo-app -- python
+Python 3.10.14 (main, Mar 25 2024, 21:45:25) [GCC 12.2.0] on linux
+Type "help", "copyright", "credits" or "license" for more information.
+>>> import vineyard
+>>> client = vineyard.connect()
+>>> client.status
+{
+    instance_id: 2,
+    deployment: local,
+    memory_usage: 0,
+    memory_limit: 1073741824, # 1Gi, not 20Gi in vineyard worker
+    deferred_requests: 0,
+    ipc_connections: 1,
+    rpc_connections: 0
+}
+```
diff --git a/docs/zh/dev/api_doc.md b/docs/zh/dev/api_doc.md
index a8a98c29..fa854f51 100644
--- a/docs/zh/dev/api_doc.md
+++ b/docs/zh/dev/api_doc.md
@@ -2392,8 +2392,8 @@ If worker.replicas and the field are both specified, the field will be respected
 <td>
 <code>fuse</code></br>
 <em>
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">
-VineyardSockSpec
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">
+VineyardClientSocketSpec
 </a>
 </em>
 </td>
@@ -5293,7 +5293,7 @@ string
 <a href="#data.fluid.io/v1alpha1.JindoFuseSpec">JindoFuseSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.JuiceFSFuseSpec">JuiceFSFuseSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.ThinFuseSpec">ThinFuseSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec</a>)
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec</a>)
 </p>
 <p>
 </p>
@@ -7516,8 +7516,8 @@ bool
 <a href="#data.fluid.io/v1alpha1.JuiceFSFuseSpec">JuiceFSFuseSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.ThinCompTemplateSpec">ThinCompTemplateSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.ThinFuseSpec">ThinFuseSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec</a>)
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec</a>, 
+<a href="#data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec</a>)
 </p>
 <p>
 </p>
@@ -7806,9 +7806,9 @@ Kubernetes core/v1.NodeAffinity
 <a href="#data.fluid.io/v1alpha1.JuiceFSRuntimeSpec">JuiceFSRuntimeSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.Metadata">Metadata</a>, 
 <a href="#data.fluid.io/v1alpha1.Processor">Processor</a>, 
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec</a>, 
 <a href="#data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>, 
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec</a>)
+<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>)
 </p>
 <p>
 <p>PodMetadata defines subgroup properties of metav1.ObjectMeta</p>
@@ -9977,6 +9977,183 @@ string
 </tr>
 </tbody>
 </table>
+<h3 id="data.fluid.io/v1alpha1.VineyardClientSocketSpec">VineyardClientSocketSpec
+</h3>
+<p>
+(<em>Appears on:</em>
+<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>)
+</p>
+<p>
+<p>VineyardClientSocketSpec holds the configurations for vineyard client socket</p>
+</p>
+<table>
+<thead>
+<tr>
+<th>Field</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+<code>image</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Image for Vineyard Fuse
+Default is <code>vineyardcloudnative/vineyard-fluid-fuse</code></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>imageTag</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Image Tag for Vineyard Fuse
+Default is <code>v0.21.5</code></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>imagePullPolicy</code></br>
+<em>
+string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Image pull policy for Vineyard Fuse
+Default is <code>IfNotPresent</code>
+Available values are <code>Always</code>, <code>IfNotPresent</code>, <code>Never</code></p>
+</td>
+</tr>
+<tr>
+<td>
+<code>env</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Environment variables that will be used by Vineyard Fuse.
+Default is not set.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>cleanPolicy</code></br>
+<em>
+<a href="#data.fluid.io/v1alpha1.FuseCleanPolicy">
+FuseCleanPolicy
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>CleanPolicy decides when to clean Vineyard Fuse pods.
+Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted
+OnDemand cleans fuse pod once th fuse pod on some node is not needed
+OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted
+Defaults to OnRuntimeDeleted</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>resources</code></br>
+<em>
+<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#resourcerequirements-v1-core">
+Kubernetes core/v1.ResourceRequirements
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Resources contains the resource requirements and limits for the Vineyard Fuse.
+Default is not set.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>networkMode</code></br>
+<em>
+<a href="#data.fluid.io/v1alpha1.NetworkMode">
+NetworkMode
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Whether to use hostnetwork or not
+Default is HostNetwork</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>podMetadata</code></br>
+<em>
+<a href="#data.fluid.io/v1alpha1.PodMetadata">
+PodMetadata
+</a>
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>PodMetadata defines labels and annotations that will be propagated to Vineyard&rsquo;s pods.</p>
+</td>
+</tr>
+<tr>
+<td>
+<code>options</code></br>
+<em>
+map[string]string
+</em>
+</td>
+<td>
+<em>(Optional)</em>
+<p>Options for configuring vineyardd parameters.
+Supported options are as follows.
+reserve_memory: (Bool) Whether to reserving enough physical memory pages for vineyardd.
+Default is true.
+allocator: (String) The allocator used by vineyardd, could be &ldquo;dlmalloc&rdquo; or &ldquo;mimalloc&rdquo;.
+Default is &ldquo;dlmalloc&rdquo;.
+compression: (Bool) Compress before migration or spilling.
+Default is true.
+coredump: (Bool) Enable coredump core dump when been aborted.
+Default is false.
+meta_timeout: (Int) Timeout period before waiting the metadata service to be ready, in seconds
+Default is 60.
+etcd_endpoint: (String) The endpoint of etcd.
+Default is same as the etcd endpoint of vineyard worker.
+etcd_prefix: (String) Metadata path prefix in etcd.
+Default is &ldquo;/vineyard&rdquo;.
+size: (String) shared memory size for vineyardd.
+1024M, 1024000, 1G, or 1Gi.
+Default is &ldquo;0&rdquo;, which means no cache.
+When the size is not set to &ldquo;0&rdquo;, it should be greater than the 2048 bytes(2K).
+spill_path: (String) Path to spill temporary files, if not set, spilling will be disabled.
+Default is &ldquo;&rdquo;.
+spill_lower_rate: (Double) The lower rate of memory usage to trigger spilling.
+Default is 0.3.
+spill_upper_rate: (Double) The upper rate of memory usage to stop spilling.
+Default is 0.8.
+Default is as follows.
+fuse:
+options:
+size: &ldquo;0&rdquo;
+etcd_endpoint: &ldquo;http://{{Name}}-master-0.{{Name}}-master.{{Namespace}}:{{EtcdClientPort}}&rdquo;
+etcd_prefix: &ldquo;/vineyard&rdquo;</p>
+</td>
+</tr>
+</tbody>
+</table>
 <h3 id="data.fluid.io/v1alpha1.VineyardCompTemplateSpec">VineyardCompTemplateSpec
 </h3>
 <p>
@@ -10243,8 +10420,8 @@ If worker.replicas and the field are both specified, the field will be respected
 <td>
 <code>fuse</code></br>
 <em>
-<a href="#data.fluid.io/v1alpha1.VineyardSockSpec">
-VineyardSockSpec
+<a href="#data.fluid.io/v1alpha1.VineyardClientSocketSpec">
+VineyardClientSocketSpec
 </a>
 </em>
 </td>
@@ -10337,140 +10514,6 @@ Default is null.</p>
 </tr>
 </tbody>
 </table>
-<h3 id="data.fluid.io/v1alpha1.VineyardSockSpec">VineyardSockSpec
-</h3>
-<p>
-(<em>Appears on:</em>
-<a href="#data.fluid.io/v1alpha1.VineyardRuntimeSpec">VineyardRuntimeSpec</a>)
-</p>
-<p>
-<p>VineyardSockSpec holds the configurations for vineyard client socket</p>
-</p>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>image</code></br>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Image for Vineyard Fuse
-Default is <code>vineyardcloudnative/vineyard-fluid-fuse</code></p>
-</td>
-</tr>
-<tr>
-<td>
-<code>imageTag</code></br>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Image Tag for Vineyard Fuse
-Default is <code>v0.21.5</code></p>
-</td>
-</tr>
-<tr>
-<td>
-<code>imagePullPolicy</code></br>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Image pull policy for Vineyard Fuse
-Default is <code>IfNotPresent</code>
-Available values are <code>Always</code>, <code>IfNotPresent</code>, <code>Never</code></p>
-</td>
-</tr>
-<tr>
-<td>
-<code>env</code></br>
-<em>
-map[string]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Environment variables that will be used by Vineyard Fuse.
-Default is not set.</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>cleanPolicy</code></br>
-<em>
-<a href="#data.fluid.io/v1alpha1.FuseCleanPolicy">
-FuseCleanPolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>CleanPolicy decides when to clean Vineyard Fuse pods.
-Currently Fluid supports two policies: OnDemand and OnRuntimeDeleted
-OnDemand cleans fuse pod once th fuse pod on some node is not needed
-OnRuntimeDeleted cleans fuse pod only when the cache runtime is deleted
-Defaults to OnRuntimeDeleted</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>resources</code></br>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#resourcerequirements-v1-core">
-Kubernetes core/v1.ResourceRequirements
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Resources contains the resource requirements and limits for the Vineyard Fuse.
-Default is not set.</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>networkMode</code></br>
-<em>
-<a href="#data.fluid.io/v1alpha1.NetworkMode">
-NetworkMode
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Whether to use hostnetwork or not
-Default is HostNetwork</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>podMetadata</code></br>
-<em>
-<a href="#data.fluid.io/v1alpha1.PodMetadata">
-PodMetadata
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>PodMetadata defines labels and annotations that will be propagated to Vineyard&rsquo;s pods.</p>
-</td>
-</tr>
-</tbody>
-</table>
 <h3 id="data.fluid.io/v1alpha1.VolumeSource">VolumeSource
 </h3>
 <p>
diff --git a/go.mod b/go.mod
index a0221bfb..186550a2 100644
--- a/go.mod
+++ b/go.mod
@@ -73,7 +73,7 @@ require (
 	github.com/stretchr/testify v1.8.4
 	go.uber.org/zap v1.24.0
 	golang.org/x/net v0.25.0
-	golang.org/x/time v0.3.0
+	golang.org/x/time v0.5.0
 	google.golang.org/grpc v1.64.0
 	gopkg.in/yaml.v2 v2.4.0
 	gopkg.in/yaml.v3 v3.0.1
diff --git a/go.sum b/go.sum
index 1850a041..3fc67646 100644
--- a/go.sum
+++ b/go.sum
@@ -1447,8 +1447,9 @@ golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxb
 golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
+golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
 golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
diff --git a/pkg/controllers/v1alpha1/databackup/status_handler.go b/pkg/controllers/v1alpha1/databackup/status_handler.go
index 5a720015..9befa5e1 100644
--- a/pkg/controllers/v1alpha1/databackup/status_handler.go
+++ b/pkg/controllers/v1alpha1/databackup/status_handler.go
@@ -53,8 +53,9 @@ func (o *OnceHandler) GetOperationStatus(ctx runtime.ReconcileRequestContext, op
 	if !kubeclient.IsFinishedPod(backupPod) {
 		return
 	}
+
 	// set the node labels in status when job finished
-	if result.NodeAffinity == nil {
+	if dataflow.Enabled(dataflow.DataflowAffinity) && result.NodeAffinity == nil {
 		// generate the node labels
 		result.NodeAffinity, err = dataflow.GenerateNodeAffinity(ctx.Client, backupPod)
 		if err != nil {
diff --git a/pkg/controllers/v1alpha1/dataload/status_handler.go b/pkg/controllers/v1alpha1/dataload/status_handler.go
index cbd0f8cd..ca408d61 100644
--- a/pkg/controllers/v1alpha1/dataload/status_handler.go
+++ b/pkg/controllers/v1alpha1/dataload/status_handler.go
@@ -81,7 +81,7 @@ func (r *OnceStatusHandler) GetOperationStatus(ctx cruntime.ReconcileRequestCont
 	}
 
 	// set the node labels in status when job finished
-	if result.NodeAffinity == nil {
+	if dataflow.Enabled(dataflow.DataflowAffinity) && result.NodeAffinity == nil {
 		jobPod, err := kubeclient.GetSucceedPodForJob(r.Client, job)
 		if err != nil {
 			ctx.Log.Error(err, "can't get pod for job", "namespace", ctx.Namespace, "jobName", jobName)
diff --git a/pkg/controllers/v1alpha1/datamigrate/status_handler.go b/pkg/controllers/v1alpha1/datamigrate/status_handler.go
index c501d609..f0d83f7b 100644
--- a/pkg/controllers/v1alpha1/datamigrate/status_handler.go
+++ b/pkg/controllers/v1alpha1/datamigrate/status_handler.go
@@ -91,7 +91,7 @@ func (m *OnceStatusHandler) GetOperationStatus(ctx cruntime.ReconcileRequestCont
 	// for parallel migrate, there are multiple pods, so can not set the node labels.
 	if m.dataMigrate.Spec.Parallelism == 1 {
 		// set the node labels in status
-		if result.NodeAffinity == nil {
+		if dataflow.Enabled(dataflow.DataflowAffinity) && result.NodeAffinity == nil {
 			jobPod, err := kubeclient.GetSucceedPodForJob(m.Client, job)
 			if err != nil {
 				ctx.Log.Error(err, "can't get pod for job", "namespace", ctx.Namespace, "jobName", jobName)
diff --git a/pkg/controllers/v1alpha1/dataprocess/status_handler.go b/pkg/controllers/v1alpha1/dataprocess/status_handler.go
index d2d00ce5..4659270d 100644
--- a/pkg/controllers/v1alpha1/dataprocess/status_handler.go
+++ b/pkg/controllers/v1alpha1/dataprocess/status_handler.go
@@ -70,7 +70,7 @@ func (handler *OnceStatusHandler) GetOperationStatus(ctx runtime.ReconcileReques
 	}
 
 	// set the node labels in status when job finished
-	if result.NodeAffinity == nil {
+	if dataflow.Enabled(dataflow.DataflowAffinity) && result.NodeAffinity == nil {
 		jobPod, err := kubeclient.GetSucceedPodForJob(handler.Client, job)
 		if err != nil {
 			ctx.Log.Error(err, "can't get pod for job", "namespace", ctx.Namespace, "jobName", jobName)
diff --git a/pkg/dataflow/affinity.go b/pkg/dataflow/affinity.go
index a8e080b7..4d4d91c4 100644
--- a/pkg/dataflow/affinity.go
+++ b/pkg/dataflow/affinity.go
@@ -28,6 +28,10 @@ import (
 
 // InjectAffinityByRunAfterOp inject the affinity based on preceding operation
 func InjectAffinityByRunAfterOp(c client.Client, runAfter *datav1alpha1.OperationRef, opNamespace string, currentAffinity *v1.Affinity) (*v1.Affinity, error) {
+	if !Enabled(DataflowAffinity) {
+		return currentAffinity, nil
+	}
+
 	// no previous operation or use default affinity strategy, no need to generate node affinity
 	if runAfter == nil || runAfter.AffinityStrategy.Policy == datav1alpha1.DefaultAffinityStrategy {
 		return currentAffinity, nil
diff --git a/pkg/dataflow/features.go b/pkg/dataflow/features.go
new file mode 100644
index 00000000..4c65ca4c
--- /dev/null
+++ b/pkg/dataflow/features.go
@@ -0,0 +1,44 @@
+/*
+Copyright 2024 The Fluid Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package dataflow
+
+import (
+	utilfeature "github.com/fluid-cloudnative/fluid/pkg/utils/feature"
+	"k8s.io/apimachinery/pkg/util/runtime"
+	"k8s.io/component-base/featuregate"
+)
+
+const (
+	// DataflowAffinity Enable affinity inheritance for dataflow operations.
+	DataflowAffinity featuregate.Feature = "DataflowAffinity"
+)
+
+// defaultFeatureGates consists of all known fluid-specific feature keys.
+// To add a new feature, define a key for it above and add it here.
+var defaultFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{
+	DataflowAffinity: {Default: false, PreRelease: featuregate.Alpha},
+}
+
+func init() {
+	// register the feature gates and its default value.
+	runtime.Must(utilfeature.DefaultMutableFeatureGate.Add(defaultFeatureGates))
+}
+
+// Enabled is helper for `utilfeature.DefaultFeatureGate.Enabled()`
+func Enabled(f featuregate.Feature) bool {
+	return utilfeature.DefaultFeatureGate.Enabled(f)
+}
diff --git a/pkg/ddc/base/volume.go b/pkg/ddc/base/volume.go
index 2480450a..621a3a41 100644
--- a/pkg/ddc/base/volume.go
+++ b/pkg/ddc/base/volume.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2022 The Fluid Authors.
+Copyright 2020 The Fluid Authors.
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/ddc/jindocache/const.go b/pkg/ddc/jindocache/const.go
index 659e1409..4904e399 100644
--- a/pkg/ddc/jindocache/const.go
+++ b/pkg/ddc/jindocache/const.go
@@ -52,7 +52,7 @@ const (
 
 	jindoFuseMountpath = "/jfs/jindofs-fuse"
 
-	defaultJindofsxRuntimeImage = "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.2.0"
+	defaultJindofsxRuntimeImage = "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.4.0"
 
 	engineType = "jindocache"
 
diff --git a/pkg/ddc/jindocache/transform.go b/pkg/ddc/jindocache/transform.go
index 784661b6..1833f94e 100644
--- a/pkg/ddc/jindocache/transform.go
+++ b/pkg/ddc/jindocache/transform.go
@@ -947,7 +947,7 @@ func (e *JindoCacheEngine) getSmartDataConfigs(runtime *datav1alpha1.JindoRuntim
 	// Apply defaults
 	config := smartdataConfig{
 		image:           "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata",
-		imageTag:        "6.2.0",
+		imageTag:        "6.4.0",
 		imagePullPolicy: "Always",
 		dnsServer:       "1.1.1.1",
 	}
@@ -985,7 +985,7 @@ func (e *JindoCacheEngine) getSmartDataConfigs(runtime *datav1alpha1.JindoRuntim
 func (e *JindoCacheEngine) parseFuseImage(runtime *datav1alpha1.JindoRuntime) (image, tag, imagePullPolicy string) {
 	// Apply defaults
 	image = "registry.cn-shanghai.aliyuncs.com/jindofs/jindo-fuse"
-	tag = "6.2.0"
+	tag = "6.4.0"
 	imagePullPolicy = "Always"
 
 	// Override with global-scoped configs
diff --git a/pkg/ddc/vineyard/const.go b/pkg/ddc/vineyard/const.go
index 962a40c3..18b0550b 100644
--- a/pkg/ddc/vineyard/const.go
+++ b/pkg/ddc/vineyard/const.go
@@ -41,4 +41,17 @@ const (
 	WorkerEtcdPrefix = "etcd.prefix"
 
 	DefaultWorkerEtcdPrefixValue = "/vineyard"
+
+	// the size of vineyardd in vineyard-fuse
+	VineyarddSize = "size"
+
+	// the etcd endpoint of vineyardd in vineyard-fuse
+	EtcdEndpoint = "etcd_endpoint"
+
+	// the etcd prefix of vineyardd in vineyard-fuse
+	EtcdPrefix = "etcd_prefix"
+
+	DefaultSize = "0"
+
+	DefaultEtcdPrefix = "/vineyard"
 )
diff --git a/pkg/ddc/vineyard/transform.go b/pkg/ddc/vineyard/transform.go
index 8c715873..77df3b15 100644
--- a/pkg/ddc/vineyard/transform.go
+++ b/pkg/ddc/vineyard/transform.go
@@ -191,6 +191,10 @@ func (e *VineyardEngine) transformFuse(runtime *datav1alpha1.VineyardRuntime, va
 	// parse fuse pod network mode
 	value.Fuse.HostNetwork = datav1alpha1.IsHostNetwork(runtime.Spec.Fuse.NetworkMode)
 
+	options := e.transformFuseOptions(runtime, value)
+	if len(options) != 0 {
+		value.Fuse.Options = options
+	}
 	e.transformResourcesForFuse(runtime, value)
 }
 
@@ -237,6 +241,21 @@ func (e *VineyardEngine) transformWorkerOptions(runtime *datav1alpha1.VineyardRu
 	return options
 }
 
+func (e *VineyardEngine) transformFuseOptions(runtime *datav1alpha1.VineyardRuntime, value *Vineyard) map[string]string {
+	options := map[string]string{
+		VineyarddSize: DefaultSize,
+		EtcdEndpoint:  fmt.Sprintf("http://%s-master-0.%s-master.%s:%d", value.FullnameOverride, value.FullnameOverride, e.namespace, value.Master.Ports[MasterClientName]),
+		EtcdPrefix:    DefaultEtcdPrefix,
+	}
+
+	if len(runtime.Spec.Fuse.Options) > 0 {
+		for key, value := range runtime.Spec.Fuse.Options {
+			options[key] = value
+		}
+	}
+	return options
+}
+
 func (e *VineyardEngine) transformWorkerPorts(runtime *datav1alpha1.VineyardRuntime) map[string]int {
 	ports := map[string]int{
 		WorkerRPCName:      WorkerRPCPort,
diff --git a/pkg/ddc/vineyard/type.go b/pkg/ddc/vineyard/type.go
index 2f422862..f5f9ee18 100644
--- a/pkg/ddc/vineyard/type.go
+++ b/pkg/ddc/vineyard/type.go
@@ -93,6 +93,7 @@ type Fuse struct {
 	NodeSelector    map[string]string            `json:"nodeSelector,omitempty"`
 	Resources       common.Resources             `json:"resources,omitempty"`
 	HostPID         bool                         `json:"hostPID,omitempty"`
+	Options         map[string]string            `json:"options,omitempty"`
 }
 
 type TieredStore struct {
diff --git a/pkg/utils/jindo/jindo.go b/pkg/utils/jindo/jindo.go
index 4c15f413..130216dd 100644
--- a/pkg/utils/jindo/jindo.go
+++ b/pkg/utils/jindo/jindo.go
@@ -29,7 +29,7 @@ const (
 
 	defaultJindofsxRuntimeImage = "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:4.6.8"
 
-	defaultJindoCacheRuntimeImage = "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.2.0"
+	defaultJindoCacheRuntimeImage = "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.4.0"
 )
 
 // GetDefaultEngineImpl gets the runtime type for Jindo
diff --git a/vendor/golang.org/x/time/rate/rate.go b/vendor/golang.org/x/time/rate/rate.go
index f0e0cf3c..8f6c7f49 100644
--- a/vendor/golang.org/x/time/rate/rate.go
+++ b/vendor/golang.org/x/time/rate/rate.go
@@ -52,6 +52,8 @@ func Every(interval time.Duration) Limit {
 // or its associated context.Context is canceled.
 //
 // The methods AllowN, ReserveN, and WaitN consume n tokens.
+//
+// Limiter is safe for simultaneous use by multiple goroutines.
 type Limiter struct {
 	mu     sync.Mutex
 	limit  Limit
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 80962a8a..4d1877b7 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -301,8 +301,8 @@ golang.org/x/text/secure/bidirule
 golang.org/x/text/transform
 golang.org/x/text/unicode/bidi
 golang.org/x/text/unicode/norm
-# golang.org/x/time v0.3.0
-## explicit
+# golang.org/x/time v0.5.0
+## explicit; go 1.18
 golang.org/x/time/rate
 # gomodules.xyz/jsonpatch/v2 v2.2.0
 ## explicit; go 1.12


Test patch:
diff --git a/pkg/dataflow/affinity_test.go b/pkg/dataflow/affinity_test.go
index e30c7646..bc4ca70b 100644
--- a/pkg/dataflow/affinity_test.go
+++ b/pkg/dataflow/affinity_test.go
@@ -20,6 +20,7 @@ import (
 	datav1alpha1 "github.com/fluid-cloudnative/fluid/api/v1alpha1"
 	"github.com/fluid-cloudnative/fluid/pkg/common"
 	"github.com/fluid-cloudnative/fluid/pkg/utils/fake"
+	"github.com/fluid-cloudnative/fluid/pkg/utils/feature"
 	appsv1 "k8s.io/api/apps/v1"
 	v1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -31,10 +32,11 @@ import (
 func TestInjectAffinityByRunAfterOp(t *testing.T) {
 
 	type args struct {
-		runAfter        *datav1alpha1.OperationRef
-		opNamespace     string
-		objects         []runtime.Object
-		currentAffinity *v1.Affinity
+		runAfter                *datav1alpha1.OperationRef
+		opNamespace             string
+		objects                 []runtime.Object
+		currentAffinity         *v1.Affinity
+		dataflowAffinityEnabled bool
 	}
 	tests := []struct {
 		name    string
@@ -58,8 +60,9 @@ func TestInjectAffinityByRunAfterOp(t *testing.T) {
 						Status: datav1alpha1.OperationStatus{},
 					},
 				},
-				opNamespace:     "default",
-				currentAffinity: nil,
+				opNamespace:             "default",
+				currentAffinity:         nil,
+				dataflowAffinityEnabled: true,
 			},
 			want:    nil,
 			wantErr: false,
@@ -83,8 +86,9 @@ func TestInjectAffinityByRunAfterOp(t *testing.T) {
 						Status: datav1alpha1.OperationStatus{},
 					},
 				},
-				opNamespace:     "default",
-				currentAffinity: nil,
+				opNamespace:             "default",
+				currentAffinity:         nil,
+				dataflowAffinityEnabled: true,
 			},
 			want:    nil,
 			wantErr: true,
@@ -124,8 +128,9 @@ func TestInjectAffinityByRunAfterOp(t *testing.T) {
 						},
 					},
 				},
-				opNamespace:     "default",
-				currentAffinity: nil,
+				opNamespace:             "default",
+				currentAffinity:         nil,
+				dataflowAffinityEnabled: true,
 			},
 			want: &v1.Affinity{
 				NodeAffinity: &v1.NodeAffinity{
@@ -186,8 +191,9 @@ func TestInjectAffinityByRunAfterOp(t *testing.T) {
 						},
 					},
 				},
-				opNamespace:     "default",
-				currentAffinity: nil,
+				opNamespace:             "default",
+				currentAffinity:         nil,
+				dataflowAffinityEnabled: true,
 			},
 			want: &v1.Affinity{
 				NodeAffinity: &v1.NodeAffinity{
@@ -260,8 +266,9 @@ func TestInjectAffinityByRunAfterOp(t *testing.T) {
 						},
 					},
 				},
-				opNamespace:     "default",
-				currentAffinity: nil,
+				opNamespace:             "default",
+				currentAffinity:         nil,
+				dataflowAffinityEnabled: true,
 			},
 			want: &v1.Affinity{
 				NodeAffinity: &v1.NodeAffinity{
@@ -283,6 +290,65 @@ func TestInjectAffinityByRunAfterOp(t *testing.T) {
 			},
 			wantErr: false,
 		},
+		{
+			name: "not enabled, prefer policy, use zone",
+			args: args{
+				runAfter: &datav1alpha1.OperationRef{
+					Kind:      "DataLoad",
+					Name:      "test-op",
+					Namespace: "test",
+					AffinityStrategy: datav1alpha1.AffinityStrategy{
+						Policy: datav1alpha1.PreferAffinityStrategy,
+						Prefers: []datav1alpha1.Prefer{
+							{
+								Weight: 10,
+								Name:   common.K8sZoneLabelKey,
+							},
+						},
+					},
+				},
+				objects: []runtime.Object{
+					&datav1alpha1.DataLoad{
+						ObjectMeta: metav1.ObjectMeta{
+							Name:      "test-op",
+							Namespace: "test",
+						},
+						Status: datav1alpha1.OperationStatus{
+							NodeAffinity: &v1.NodeAffinity{
+								RequiredDuringSchedulingIgnoredDuringExecution: &v1.NodeSelector{
+									NodeSelectorTerms: []v1.NodeSelectorTerm{
+										{
+											MatchExpressions: []v1.NodeSelectorRequirement{
+												{
+													Key:      common.K8sNodeNameLabelKey,
+													Operator: v1.NodeSelectorOpIn,
+													Values:   []string{"node01"},
+												},
+												{
+													Key:      common.K8sZoneLabelKey,
+													Operator: v1.NodeSelectorOpIn,
+													Values:   []string{"zone01"},
+												},
+												{
+													Key:      common.K8sRegionLabelKey,
+													Operator: v1.NodeSelectorOpIn,
+													Values:   []string{"region01"},
+												},
+											},
+										},
+									},
+								},
+							},
+						},
+					},
+				},
+				opNamespace:             "default",
+				currentAffinity:         nil,
+				dataflowAffinityEnabled: false,
+			},
+			want:    nil,
+			wantErr: false,
+		},
 	}
 	testScheme := runtime.NewScheme()
 	_ = v1.AddToScheme(testScheme)
@@ -292,6 +358,15 @@ func TestInjectAffinityByRunAfterOp(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			c := fake.NewFakeClientWithScheme(testScheme, tt.args.objects...)
+
+			err := feature.DefaultMutableFeatureGate.SetFromMap(map[string]bool{
+				string(DataflowAffinity): tt.args.dataflowAffinityEnabled,
+			})
+			if err != nil {
+				t.Errorf("failed to set feature gate: %v", err)
+				return
+			}
+
 			got, err := InjectAffinityByRunAfterOp(c, tt.args.runAfter, tt.args.opNamespace, tt.args.currentAffinity)
 			if (err != nil) != tt.wantErr {
 				t.Errorf("InjectAffinityByRunAfterOp() error = %v, wantErr %v", err, tt.wantErr)
diff --git a/pkg/ddc/alluxio/ufs_test.go b/pkg/ddc/alluxio/ufs_test.go
index aaad61ef..1945251e 100644
--- a/pkg/ddc/alluxio/ufs_test.go
+++ b/pkg/ddc/alluxio/ufs_test.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2023 The Fluid Authors.
+Copyright 2021 The Fluid Authors.
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/pkg/ddc/jindocache/transform_fuse_test.go b/pkg/ddc/jindocache/transform_fuse_test.go
index bc0bf442..bbbf4630 100644
--- a/pkg/ddc/jindocache/transform_fuse_test.go
+++ b/pkg/ddc/jindocache/transform_fuse_test.go
@@ -188,7 +188,7 @@ func TestParseFuseImage(t *testing.T) {
 					}},
 				}},
 			jindoValue:            &Jindo{},
-			expect:                "registry.cn-shanghai.aliyuncs.com/jindofs/jindo-fuse:6.2.0",
+			expect:                "registry.cn-shanghai.aliyuncs.com/jindofs/jindo-fuse:6.4.0",
 			expectImagePullPolicy: "Always",
 		},
 		{
diff --git a/pkg/ddc/jindocache/transform_test.go b/pkg/ddc/jindocache/transform_test.go
index 670438bc..74fae227 100644
--- a/pkg/ddc/jindocache/transform_test.go
+++ b/pkg/ddc/jindocache/transform_test.go
@@ -131,7 +131,7 @@ func TestParseSmartDataImage(t *testing.T) {
 					}},
 				}},
 			jindoValue:            &Jindo{},
-			expect:                "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.2.0",
+			expect:                "registry.cn-shanghai.aliyuncs.com/jindofs/smartdata:6.4.0",
 			expectImagePullPolicy: "Always",
 			expectDnsServer:       "1.1.1.1",
 		},
diff --git a/pkg/ddc/vineyard/transform_resources_test.go b/pkg/ddc/vineyard/transform_resources_test.go
index 78ab46d6..9006b0ca 100644
--- a/pkg/ddc/vineyard/transform_resources_test.go
+++ b/pkg/ddc/vineyard/transform_resources_test.go
@@ -523,7 +523,7 @@ func TestTransformResourcesForFuseWithValue(t *testing.T) {
 	}{
 		{&datav1alpha1.VineyardRuntime{
 			Spec: datav1alpha1.VineyardRuntimeSpec{
-				Fuse: datav1alpha1.VineyardSockSpec{
+				Fuse: datav1alpha1.VineyardClientSocketSpec{
 					Resources: resources,
 				},
 				TieredStore: datav1alpha1.TieredStore{
diff --git a/pkg/ddc/vineyard/transform_test.go b/pkg/ddc/vineyard/transform_test.go
index f29adfe7..fa1aeac4 100755
--- a/pkg/ddc/vineyard/transform_test.go
+++ b/pkg/ddc/vineyard/transform_test.go
@@ -51,7 +51,7 @@ func TestTransformFuse(t *testing.T) {
 		"test image, imageTag and pullPolicy": {
 			runtime: &datav1alpha1.VineyardRuntime{
 				Spec: datav1alpha1.VineyardRuntimeSpec{
-					Fuse: datav1alpha1.VineyardSockSpec{
+					Fuse: datav1alpha1.VineyardClientSocketSpec{
 						Image:           "dummy-fuse-image",
 						ImageTag:        "dummy-tag",
 						ImagePullPolicy: "IfNotPresent",
@@ -67,7 +67,7 @@ func TestTransformFuse(t *testing.T) {
 		"test image, imageTag and pullPolicy from env": {
 			runtime: &datav1alpha1.VineyardRuntime{
 				Spec: datav1alpha1.VineyardRuntimeSpec{
-					Fuse: datav1alpha1.VineyardSockSpec{
+					Fuse: datav1alpha1.VineyardClientSocketSpec{
 						ImagePullPolicy: "IfNotPresent",
 						Env:             map[string]string{"TEST_ENV": "true"},
 						CleanPolicy:     "OnRuntimeDeleted",
@@ -473,6 +473,78 @@ func TestTransformWorkerOptions(t *testing.T) {
 	}
 }
 
+func TestTransformFuseOptions(t *testing.T) {
+	tests := []struct {
+		name     string
+		runtime  *datav1alpha1.VineyardRuntime
+		value    *Vineyard
+		expected map[string]string
+	}{
+		{
+			name: "NoFuseOptions",
+			runtime: &datav1alpha1.VineyardRuntime{
+				Spec: datav1alpha1.VineyardRuntimeSpec{
+					Fuse: datav1alpha1.VineyardClientSocketSpec{
+						Options: map[string]string{},
+					},
+				},
+			},
+			value: &Vineyard{
+				FullnameOverride: "vineyard",
+				Master: Master{
+					Ports: map[string]int{
+						"client": 2379,
+					},
+				},
+			},
+			expected: map[string]string{
+				"size":          "0",
+				"etcd_endpoint": "http://vineyard-master-0.vineyard-master.default:2379",
+				"etcd_prefix":   "/vineyard",
+			},
+		},
+		{
+			name: "WithFuseOptions",
+			runtime: &datav1alpha1.VineyardRuntime{
+				Spec: datav1alpha1.VineyardRuntimeSpec{
+					Fuse: datav1alpha1.VineyardClientSocketSpec{
+						Options: map[string]string{
+							"size":           "10Gi",
+							"etcd_endpoint":  "http://vineyard-master-0.vineyard-master.default:12379",
+							"reserve_memory": "true",
+						},
+					},
+				},
+			},
+			value: &Vineyard{
+				Master: Master{
+					Ports: map[string]int{
+						"client": 12379,
+					},
+				},
+			},
+			expected: map[string]string{
+				"size":           "10Gi",
+				"etcd_endpoint":  "http://vineyard-master-0.vineyard-master.default:12379",
+				"etcd_prefix":    "/vineyard",
+				"reserve_memory": "true",
+			},
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			engine := &VineyardEngine{
+				namespace: "default",
+			}
+			actual := engine.transformFuseOptions(tt.runtime, tt.value)
+			if !reflect.DeepEqual(actual, tt.expected) {
+				t.Errorf("%s: expected %v, got %v", tt.name, tt.expected, actual)
+			}
+		})
+	}
+}
+
 func TestTransformWorkerPorts(t *testing.T) {
 	tests := []struct {
 		name     string