Discussion: #1977
MotivationWhat is the motivation for the change?
This will increase the throughput of Blob trigger binary data transfer between host and Python worker.
How many customers (roughly) would be impacted by this break? If not known, how can we figure it out? This may require host changes to gather metrics.
Customers using blob triggers may be impacted by this change when updating to v4 (potential ~80k function apps). Using the following query can get the list of function app using blob triggers.
set query_results_cache_max_age = time(1d); let SiteFunctionMetrics = FunctionsMetrics | where TIMESTAMP > ago(1d) | where FunctionName != 'WarmUp' and FunctionName != ''; SiteFunctionMetrics | where EventName startswith "function.binding." | extend EventNameParts = split(EventName, '.') | extend BindingName = tostring(EventNameParts[2]), BindingDirections=tostring(EventNameParts[3]) | extend Trigger = iif(BindingDirections == '' , BindingName, '') | extend InputBinding = iif(BindingDirections in ('inout','in' ), BindingName, '') | extend OutputBinding = iif(BindingDirections in ('inout','out'), BindingName, '') | summarize TIMESTAMP = max(TIMESTAMP) by Trigger, InputBinding, OutputBinding, FunctionName, EventName | summarize TIMESTAMP = max(TIMESTAMP), Trigger = max(Trigger), InputBindings = makeset(InputBinding), OutputBindings = makeset(OutputBinding) by FunctionName | extend InputBindings = replace('\\\"', '', tostring(InputBindings)) | extend OutputBindings = replace('\\\"', '', tostring(OutputBindings)) | extend InputBindings = replace(',,', ',', trim(',', substring(InputBindings , 1, strlen(InputBindings )-2))) | extend OutputBindings = replace(',,', ',', trim(',', substring(OutputBindings, 1, strlen(OutputBindings)-2))) | extend InputBindings = iif(InputBindings == '', Trigger, strcat(Trigger, ',', InputBindings)) | where Trigger == 'httptrigger' | distinct FunctionNameCompat-mode support
We'd like to enable compat-mode support for every breaking change. This may not be feasible in reality, but each proposal should include a plan to switch back to the previous behavior with a feature flag. This requirement will be evaluated on a case-by-case basis.
Turning off the FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED feature flag will disable this feature.
DetectionCan we detect that a customer is using this when they upgrade from v3? Is there a specific error that can be thrown with a link to migration guidance?
Checking the FunctionsLogs table for Summary contains "shared memory" will show warnings and errors of this feature.
SupportWill there be any incidents-per-day impact? Who will be the support contact? Does support need to be notified of this change? (SPOT)
The point of contact will be @gohar94 and @vrdmr.
Documentation impact
Update feature flag FUNCTIONS_WORKER_SHARED_MEMORY_DATA_TRANSFER_ENABLED section in App Settings reference.
What components does this change impact? Examples of areas (this list may not be exhaustive):
- Host
- Python Worker
Does the change have any performance impact? There may need to be some implementation complete before this can be measured.
By measurement in prototype, this will increase blob trigger throughput around 20% for Python function apps.
/cc: @AnatoliB @gohar94 @vrdmr @stefanushinardi
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4