Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

"Non-Deterministic workflow detected" error from deterministic code

Ouverte
#600 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
45/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Calme
Stack technique
azure, python

Piste de recherche

Commencez par exécuter la reproduction minimale de repro_nondeterminism.py avec la configuration de function_app.py, en utilisant la chaîne d’exception fournie et la comparaison plus courte avec "x". Suivez la manière dont l’exception de l’activité est signalée lors de la relecture de l’orchestration et des vérifications de déterminisme ; le travail est terminé lorsque le workflow atteint l’état Failed et expose l’exception de l’activité sans erreur non déterministe.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

blocked bug fixed-in-v2 known-regression

🐛 Describe the bug
I have a minimal repro which makes the Function fail with "Non-Deterministic workflow detected" error, even if the code is completely deterministic. If I replace the RuntimeError argument string with "x", then I get the expected behavior. There is something in the exception string which triggers the undesired behavior.

🤔 Expected behavior
The Function should end with Failed status with the exception from the activity in the output.

☕ Steps to reproduce
Here is the code for a minimal repro: HTTP trigger + trivial orchestration and activity. The activity throws an exception every time. (the SAS signature is fake)

import logging
import azure.functions as func
import azure.durable_functions as df

bp = df.Blueprint()
logger = logging.getLogger(__name__)

# ── Trigger ────────────────────────
@bp.route(route="repro")
@bp.durable_client_input(client_name="orchestration_client")
async def http_start_repro(
    req: func.HttpRequest, orchestration_client: df.DurableOrchestrationClient
) -> func.HttpResponse:
    instance_id = await orchestration_client.start_new("repro_orchestrator")
    logger.info(f"Started repro orchestrator with ID '{instance_id}'")
    return orchestration_client.create_check_status_response(req, instance_id)

# ── Orchestrator ──────────────────
@bp.orchestration_trigger(context_name="context")
def repro_orchestrator(context: df.DurableOrchestrationContext):
    try:
        yield context.call_activity("repro_activity")
    except Exception as e:
        logger.error(f"Repro orchestrator caught: {e}")
        raise

# ── Activity ──────────────────────
@bp.activity_trigger(input_name="input_data")
def repro_activity(input_data):
    # The sig= value contains /, +, and = which trigger the bug.
    raise RuntimeError(
        "Download failed: https://example.blob.core.windows.net/container/test.file"
        "?sv=2025-07-05&spr=https&st=2026-04-01T10:58:55Z"
        "&se=2026-04-02T10:58:55Z&sr=b&sp=r"
        "&sig=aB3dE/fG5hI+jK7lM9nO="
    )

# ── function_app.py ──────────────
# Save the following as function_app.py in the same directory:

import azure.functions as func
import azure.durable_functions as df
from repro_nondeterminism import bp

app = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)
app.register_blueprint(bp)

⚡If deployed to Azure
I see the same behavior if deployed to Azure. Please refer to the code.

Langage dominant
Python
Étoiles
157
Forks
71
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de Azure/azure-functions-durable-python

Toutes les issues de Azure/azure-functions-durable-python

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.