MCPcopy Create free account
hub / github.com/apache/kvrocks / Set

Method Set

src/server/namespace.cc:124–166  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

122}
123
124Status Namespace::Set(const std::string& ns, const std::string& token) {
125 auto s = IsNamespaceLegal(ns);
126 if (!s.IsOK()) return s;
127 auto config = storage_->GetConfig();
128 if (config->requirepass.empty()) {
129 return {Status::NotOK, kErrRequiredPassEmpty};
130 }
131 if (config->cluster_enabled) {
132 return {Status::NotOK, kErrClusterModeEnabled};
133 }
134 if (!IsAllowModify()) {
135 return {Status::NotOK, kErrCantModifyNamespace};
136 }
137 if (ns == kDefaultNamespace) {
138 return {Status::NotOK, kErrAddDefaultNamespace};
139 }
140 if (token == config->requirepass || token == config->masterauth) {
141 return {Status::NotOK, kErrInvalidToken};
142 }
143
144 std::unique_lock lock(tokens_mu_);
145 if (auto iter = tokens_.find(token); iter != tokens_.end()) {
146 if (iter->second == ns) { // nothing changed
147 return Status::OK();
148 } else { // new token is occupied by another namespace
149 return {Status::NotOK, kErrTokenExists};
150 }
151 }
152 for (const auto& iter : tokens_) {
153 if (iter.second == ns) { // need to delete the old token first
154 tokens_.erase(iter.first);
155 break;
156 }
157 }
158 tokens_[token] = ns;
159
160 s = Rewrite(tokens_);
161 if (!s.IsOK()) {
162 tokens_.erase(token);
163 return s;
164 }
165 return Status::OK();
166}
167
168Status Namespace::Add(const std::string& ns, const std::string& token) {
169 {

Callers

nothing calls this directly

Calls 4

IsNamespaceLegalFunction · 0.85
endMethod · 0.80
IsOKMethod · 0.45
GetConfigMethod · 0.45

Tested by

no test coverage detected