purge_instance_history_by raises exception when optional created_time_from is not passed
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 42/100
Direzione di ricerca
Inizia in azure/durable_functions/models/DurableOrchestrationClient.py, in purge_instance_history_by, in particolare nel percorso che raggiunge delete_async_request intorno alla riga 413. Riproduci il problema con l’esempio function_app.py usando solo created_time_to, quindi confrontalo con il caso funzionante created_time_from. Il lavoro è completato quando il purge usando solo created_time_to non restituisce più l’errore 400 segnalato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
🐛 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.
- Lingua principale
- Python
- Stelle
- 157
- Fork
- 71
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Azure/azure-functions-durable-python
-
Enhancement fixed-in-v2 P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Azure/azure-functions-durable-python#617 · 1 commento ·
-
bug Debuggability fixed-in-v2 P2
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Azure/azure-functions-durable-python#587 · 2 commenti · 1 reazione ·
-
Custom object serialization broken for orchestrator return valuesForse già presa @andystaples l’ha presa 71 giorni fa. Apertabug fixed-in-v2 P2
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Azure/azure-functions-durable-python#568 · 1 commento ·
-
bug fixed-in-v2 P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Azure/azure-functions-durable-python#475 · 1 commento ·
-
Enhancement fixed-in-v2 P3
Difficoltà 4/5 3-5 giorni Idoneità per principianti 62/100
Azure/azure-functions-durable-python#618 · 1 commento ·
Tutte le issue di Azure/azure-functions-durable-python
Issue simili
-
enhancement good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
hatchet-dev/hatchet#5179 ·
I maintainer di solito rispondono entro 1 giorno
-
python-version
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
bug javascript P2-medium python release:v3.1
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
adrirubio/claude-deck#546 ·
I maintainer di solito rispondono entro 1 giorno