in Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.Mongo/Trigger/CosmosDBMongoTargetScaler.cs [58:96]
internal TargetScalerResult GetScaleResultInternal(TargetScalerContext context, long pendingWorkCount)
{
int concurrency;
if (!context.InstanceConcurrency.HasValue)
{
concurrency = _maxWorkPerInstance;
}
else
{
concurrency = context.InstanceConcurrency.Value;
}
if (concurrency < 1)
{
throw new ArgumentOutOfRangeException($"Unexpected concurrency='{concurrency}' - the value must be > 0.");
}
int targetWorkerCount = 1;
try
{
checked
{
targetWorkerCount = (int)Math.Ceiling(pendingWorkCount / (decimal)_maxWorkPerInstance);
}
}
catch (OverflowException)
{
targetWorkerCount = int.MaxValue;
}
_logger.LogDebug($"Target worker count for function '{_functionId}-{_databaseName}-{_collectionName}' is '{targetWorkerCount}' Concurrency='{concurrency}').");
return new TargetScalerResult
{
TargetWorkerCount = targetWorkerCount > _maxWorkInstance ? _maxWorkInstance : targetWorkerCount,
};
}