| 153 | } |
| 154 | |
| 155 | Status RequestPoolService::ResolveRequestPool(const TQueryCtx& ctx, |
| 156 | string* resolved_pool) { |
| 157 | if (default_pool_only_) { |
| 158 | *resolved_pool = DEFAULT_POOL_NAME; |
| 159 | return Status::OK(); |
| 160 | } |
| 161 | string user = GetEffectiveUser(ctx.session); |
| 162 | if (user.empty()) { |
| 163 | if (FLAGS_require_username) return Status(ERROR_USER_NOT_SPECIFIED); |
| 164 | // Fall back to a 'default' user if not set so that queries can still run. |
| 165 | VLOG_RPC << "No user specified: using user=default"; |
| 166 | user = DEFAULT_USER; |
| 167 | } |
| 168 | |
| 169 | const string& requested_pool = ctx.client_request.query_options.request_pool; |
| 170 | TResolveRequestPoolParams params; |
| 171 | params.__set_user(user); |
| 172 | params.__set_requested_pool(requested_pool); |
| 173 | TResolveRequestPoolResult result; |
| 174 | int64_t start_time = MonotonicMillis(); |
| 175 | Status status = JniUtil::CallJniMethod( |
| 176 | jni_request_pool_service_, resolve_request_pool_id_, params, &result); |
| 177 | resolve_pool_ms_metric_->Update(MonotonicMillis() - start_time); |
| 178 | |
| 179 | if (result.status.status_code != TErrorCode::OK) { |
| 180 | return Status(boost::algorithm::join(result.status.error_msgs, "; ")); |
| 181 | } |
| 182 | if (!result.has_access) { |
| 183 | return Status(Substitute(ERROR_USER_NOT_ALLOWED_IN_POOL, user, |
| 184 | requested_pool, result.resolved_pool)); |
| 185 | } |
| 186 | *resolved_pool = result.resolved_pool; |
| 187 | return Status::OK(); |
| 188 | } |
| 189 | |
| 190 | Status RequestPoolService::GetPoolConfig(const string& pool_name, |
| 191 | TPoolConfig* pool_config) { |
no test coverage detected