purge_instance_history_by raises exception when optional created_time_from is not passed
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 42/100
Rechercherichtung
Beginne in azure/durable_functions/models/DurableOrchestrationClient.py bei purge_instance_history_by, insbesondere beim Pfad, der um Zeile 413 herum delete_async_request erreicht. Reproduziere das Problem mit dem Beispiel function_app.py, wobei nur created_time_to verwendet wird, und vergleiche es mit dem funktionierenden Fall created_time_from. Als erledigt gilt die Aufgabe, wenn das Bereinigen mit ausschließlich created_time_to nicht mehr den gemeldeten 400-Fehler zurückgibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
🐛 Describe the bug
A clear and concise description of what the bug is.
When created_time_from: Optional[datetime] = None is not passed to purge_instance_history_by it causes an exception in delete_async_request.
Exception has occurred: Exception
The operation failed with an unexpected status code 400
File "/home/andre/code/durable-function/.venv/lib/python3.10/site-packages/azure/durable_functions/models/DurableOrchestrationClient.py", line 413, in purge_instance_history_by
return self._parse_purge_instance_history_response(response)
File "/home/andre/code/durable-function/function_app.py", line 15, in http_clean
result = await client.purge_instance_history_by(
File "/home/andre/code/durable-function/.venv/lib/python3.10/site-packages/azure/durable_functions/decorators/durable_app.py", line 199, in df_client_middleware
return await user_code(*args, **kwargs)
File "/usr/lib/azure-functions-core-tools-4/workers/python/3.10/LINUX/X64/azure_functions_worker/extension.py", line 147, in get_async_invocation_wrapper
result = await function(**args)
File "/usr/lib/azure-functions-core-tools-4/workers/python/3.10/LINUX/X64/azure_functions_worker/dispatcher.py", line 758, in _run_async_func
return await ExtensionManager.get_async_invocation_wrapper(
File "/usr/lib/azure-functions-core-tools-4/workers/python/3.10/LINUX/X64/azure_functions_worker/dispatcher.py", line 475, in _handle__invocation_request
call_result = await self._run_async_func(
File "/usr/lib/azure-functions-core-tools-4/workers/python/3.10/LINUX/X64/azure_functions_worker/dispatcher.py", line 261, in _dispatch_grpc_request
resp = await request_handler(request)
File "/usr/lib/python3.10/asyncio/events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "/usr/lib/python3.10/asyncio/base_events.py", line 1909, in _run_once
handle._run()
File "/usr/lib/python3.10/asyncio/base_events.py", line 603, in run_forever
self._run_once()
File "/usr/lib/python3.10/asyncio/base_events.py", line 636, in run_until_complete
self.run_forever()
File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/lib/azure-functions-core-tools-4/workers/python/3.10/LINUX/X64/azure_functions_worker/main.py", line 49, in main
return aio_compat.run(start_async(
File "/usr/lib/azure-functions-core-tools-4/workers/python/3.10/LINUX/X64/worker.py", line 74, in <module>
main.main()
File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
Exception: The operation failed with an unexpected status code 400
🤔 Expected behavior
What should have happened?
Clean instances older than created_time_to. Or purge_instance_history_by not to allow None in created_time_to.
☕ Steps to reproduce
What Durable Functions patterns are you using, if any?
Any minimal reproducer we can use?
Yes. function_app.py below replicates the issue.
import azure.functions as func
import azure.durable_functions as df
from datetime import datetime, timedelta
app = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@app.route(route="clean")
@app.durable_client_input(client_name="client")
async def http_clean(req: func.HttpRequest, client: df.DurableOrchestrationClient):
now = datetime.today()
created_time_to = now + timedelta(minutes=1) # leave at least 1 mins
# Clean up function
result = await client.purge_instance_history_by(
created_time_to=created_time_to,
)
return f"Cleaned {result.instances_deleted}"
For example if only created_time_from is passed, it works as expected and the entries are deleted but if only created_time_to is passed, it throws the 400 exception.
created_time_from = now - timedelta(hours=50)
# Clean up function
result = await client.purge_instance_history_by(
created_time_from=created_time_from,
)
Are you running this locally or on Azure?
Locally.
azure-functions==1.17.0
azure-functions-durable==1.2.8
⚡If deployed to Azure
We have access to a lot of telemetry that can help with investigations. Please provide as much of the following information as you can to help us investigate!
- Timeframe issue observed:
- Function App name:
- Function name(s):
- Azure region:
- Orchestration instance ID(s):
- Azure storage account name:
If you don't want to share your Function App or storage account name GitHub, please at least share the orchestration instance ID. Otherwise it's extremely difficult to look up information.
- Vorherrschende Sprache
- Python
- Sterne
- 157
- Forks
- 71
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus Azure/azure-functions-durable-python
-
Enhancement fixed-in-v2 P3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Azure/azure-functions-durable-python#617 · 1 Kommentar ·
-
bug Debuggability fixed-in-v2 P2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Azure/azure-functions-durable-python#587 · 2 Kommentare · 1 Reaktion ·
-
Custom object serialization broken for orchestrator return valuesEvtl. vergeben @andystaples hat das vor 93 Tagen übernommen. Offenbug fixed-in-v2 P2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Azure/azure-functions-durable-python#568 · 1 Kommentar ·
-
bug fixed-in-v2 P3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Azure/azure-functions-durable-python#475 · 1 Kommentar ·
-
Needs: Triage :mag:
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 72/100
Alle Issues in Azure/azure-functions-durable-python
Ähnliche Issues
-
URLValidator ignores an explicit empty scheme allowlistEvtl. vergeben @IlyaKhalafi hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
tortoise/tortoise-orm#2393 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
frappe/frappe_docker#2046 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Weekly link check failedOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
-
complete_box_iou_loss / complete_box_iou: NaN gradients for zero-height boxes, NaN for point boxesOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
Maintainer antworten meist innerhalb von 1 Tag
-
AXI SMU SPEC
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
tenstorrent/tt-oca-harness#3556 ·
Maintainer antworten meist innerhalb von 1 Tag