Граф коммитов

12 Коммитов

Автор SHA1 Сообщение Дата
Anatoli Beliaev 30250f43a2
[Durable] Implement retry policy support (#590) 2021-02-23 14:05:52 -08:00
Anatoli Beliaev 78a36d84dd
[Durable Functions] Add fan-out/fan-in pattern support (#427) 2020-03-13 23:48:35 -07:00
Anatoli Beliaev 330481ebbc
[Durable Functions] Basic "Function Chaining" implementation (#358)
Basic "Function Chaining" implementation
2019-10-29 13:54:17 -07:00
Dongbo Wang 19fa6c9789
Update 'New-gRPCAutoGenCode' to recursively find all .proto files (#165) 2019-03-13 14:43:44 -07:00
Dongbo Wang 4072ecde23
Update the protobuf subtree from 'Azure/azure-functions-language-worker-protobuf'. Branch: dev. Commit: f786ef (#147)
Also update `New-gRPCAutoGenCode` accordingly.
2019-02-19 17:50:09 -08:00
Dongbo Wang 5de474c8d1
Add in-process concurrency support to the PS worker (#123)
The major changes are:
- Use `PSThreadOptions.ReuseThread` for the `InitialSessionState` when creating `Runspace`, so that every `PowerShellManager` only creates one thread and then reuse it afterwards. The default behavior is to create a new thread every time `PowerShell.Invoke` is called.
- Update `RequestProcessor` to process `InvocationRequest` in asynchronously via tasks.
- Implement `PowerShellManagerPool` using `BlockingCollection`
   - make upper bound of the pool configurable via an environment variable `PSWorkerInProcConcurrencyUpperBound`
   - make the pool able to expand in a lazy way
   - checkout `PowerShellManager` via `CheckoutIdleWorker` on the main thread. Once getting an idle instance back, the main thread will queue a task to process an invocation request on a thread-pool thread and forget about it -- the main thread then can go ahead to process the next message.
- Update the `RpcLogger` and make every `PowerShellManager` have its own logger instance.
   - also update the way to set the `RequestId` and `InvocationId` for logger. The original way to setup the context only works for single-thread design.
- Update `MessagingStream` to use a `BlockingCollection` to hold all messages that are about to be written out, then use a single thread-pool thread to take out items and write them to the gRPC channel.
   - currently, the way we write out response/log messages is completely task-based/async, using a semaphore for synchronization. However, this approach doesn't guarantee the order of the message.
   - this is because there could be multiple tasks blocked on the semaphore, and releasing the semaphore allows a blocked task to enter the semaphore, but there is no guaranteed order, such as first-in-first-out, for blocked threads to enter the semaphore.
   - so, the unblocked task could be a random one, and thus change the arrival order of the message when writing the message to the gRPC channel.
- Remove the two system logging we have in our worker, because they drastically worsen the processing time per an invocation request when there are a lot in-coming invocation requests.
   - the logging for "TriggerMetadata" parameter is not that useful, and should be removed
   - the execution time logging is good to have, but not necessary, especially when it impact the throughput.
2019-01-07 11:56:22 -08:00
Tyler James Leonhardt ead3710125
E2e tests (#85)
* first e2e test

* conditionally chmod +x

* actually run the tests :)

* get job differently

* don't fail if we cant get the job

* honor configuration

* handle env:CONFIGURATION not set

* address Pragna's feedback

* add TestFunctionApp change

* elaborate test name

* add additional test cases

* typo

* add trigger metadata tests and Error test

* new lines

* address Steve's feedback

* address Steve's feedback

* nit extra line
2018-10-31 07:53:47 -07:00
Tyler James Leonhardt 7e084284aa Prepend the module folder under the Function App root to PSModulePath (#78) 2018-10-22 21:45:16 -07:00
Dongbo Wang 854ff1912f
Added subtree from 'azure-functions-language-worker-protobuf' repo. Branch: dev. Commit: 58b3dc0 (#61) 2018-09-20 22:12:12 -07:00
Tyler James Leonhardt 50659a9a34
bundle and handle Azure PowerShell (#47)
* add logic to grab dependencies

* move psdepends logic

* PSDepends is not a required dependency

* move comment

* actually include install deps script

* fix path

* commit handle Azure authentication

* move WriteAsync out of using

* authenticate to azure per-request and address feedback

* moved Auth to Azure in Worker Init for now
2018-09-12 14:58:47 -07:00
Tyler Leonhardt 3681e1f272 improved layout and handling of bindings 2018-08-13 13:29:07 -07:00
Microsoft GitHub User ea6074f134
Initial commit 2018-07-27 09:17:15 -07:00