Я развернул AWS Lambda, написанную на C#, и в зависимости от введенных данных вижу в консоли следующее сообщение об ошибке (усеченное):
Код: Выделить всё
{
"Cause": "{\n \"errorType\": \"IOException\",\n \"errorMessage\":
\"Too many open files : [...]at System.IO.FileSystem.RemoveDirectoryRecursive(String fullPath)
"Error": "IOException",
"ExecutionArn": [...]
У меня есть (отчасти?) хорошее представление о том, к чему относится ошибка, но я хотел бы воспроизвести ее хотя бы локально.Когда я выполняю его с помощью инструмента тестирования AWS .NET Lambda с точно таким же вводом (JSON), я не могу вызвать исключение. Поэтому я предположил, что моя система Windows 10 более снисходительна к количеству файловых дескрипторов, чем система на стороне AWS. Поэтому я добавил вызов _setmaxstdio в свой лямбда-код:
Код: Выделить всё
[DllImport("msvcrt.dll")]
public static extern int _setmaxstdio(int newMax);
И затем в основном коде я вызываю:
Я вижу, что в отладчике возвращается значение 128, но я снова не могу воспроизвести проблему локально с помощью инструмента тестирования AWS .NET Lambda. Я выбрал 128, чтобы оно было ниже значения 1024, описанного по адресу:
Как можно воспроизвести исключение локально?
Подробнее здесь:
https://stackoverflow.com/questions/781 ... open-files