122
ctx context.Context,
123
request *p.InternalSaveClusterMetadataRequest,
125
>
var query gocql.Query
126
>
if request.Version == 0 {
127
>
query = m.session.Query(
128
>
templateCreateClusterMetadata,
129
>
constMetadataPartition,
130
>
request.ClusterName,
131
>
request.ClusterMetadata.Data,
132
>
request.ClusterMetadata.EncodingType.String(),
133
>
1,
134
>
).WithContext(ctx)
135
>
} else {
136
>
query = m.session.Query(
137
>
templateUpdateClusterMetadata,
138
>
request.ClusterMetadata.Data,
139
>
request.ClusterMetadata.EncodingType.String(),
140
>
request.Version+1,
141
>
constMetadataPartition,
142
>
request.ClusterName,
143
>
request.Version,
144
>
).WithContext(ctx)
145
>
}
146
148
>
applied, err := query.MapScanCAS(previous)
149
>
if err != nil {
150
return false, gocql.ConvertError("SaveClusterMetadata", err)
151
}
153
return false, serviceerror.NewUnavailable("SaveClusterMetadata operation encountered concurrent write.")
154
}
156
}
157