1151
namespaceRateLimiter quotas.RequestRateLimiter,
1152
shardRateLimiter quotas.RequestRateLimiter,
1154
>
callerInfo := headers.GetCallerInfo(ctx)
1155
>
// namespace-level rate limits has to be applied before system-level rate limits.
1156
>
now := time.Now().UTC()
1157
>
quotaRequest := quotas.NewRequest(
1158
>
api,
1159
>
RateLimitDefaultToken,
1160
>
callerInfo.CallerName,
1161
>
callerInfo.CallerType,
1162
>
shardID,
1163
>
callerInfo.CallOrigin,
1164
>
)
1165
>
if ok := shardRateLimiter.Allow(now, quotaRequest); !ok {
1166
return ErrPersistenceNamespaceShardLimitExceeded
1167
}
1169
return ErrPersistenceNamespaceLimitExceeded
1170
}
1172
return ErrPersistenceSystemLimitExceeded
1173
}
1175
}
1176