Я пытаюсь запустить эмулятор Cosmos в Linux для запуска тестов с использованием SpecFlow.
После его установки после эти инструкции и успешного запуска переменное количество тестов случайным образом терпело неудачу каждый раз, когда я пытался их запустить.
Неудачные тесты выдают CosmosException с кодом состояния 503 (Service Unavailable).
Все эти тесты прекрасно работают в Windows и, в зависимости от того, как я их запускаю, через терминал или VSCode, количество сбоев разное.





Проблема заключалась в команде docker, представленной в документации:
docker run -p 8081:8081 -p 10251:10251 -p 10252:10252 -p 10253:10253 -p 10254:10254 -m 3g --cpus=2.0 --name=test-linux-emulator -e AZURE_COSMOS_EMULATOR_PARTITION_COUNT=10 -e AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE=true -e AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE=$ipaddr -it mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator
В частности, с этой переменной среды:
AZURE_COSMOS_EMULATOR_PARTITION_COUNT=10
Это количество разделов было слишком низким, что привело к отбрасыванию запросов. Увеличение его до 20, как было предложено в этот поток Github, решило проблему.
Я также увеличил --cpus до 3.0 и память -m до 4g, просто на всякий случай.
Обновлено: В итоге пришлось увеличить до 40. После этого он больше никогда не ломался.