Azure / Azure/durabletask

DT.AzureStorage: netstandard2.0 message format is not backwards compatible with net462

Open
#877 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
1.7k
Forks
335
Avg merge
2d 23h
Merged PRs (30d)
6

Description

### Description
Upgrading an existing app from .NET Framework to .NET Core or higher may cause existing orchestrations to get stuck due to message serialization compatibility issues.

Related: https://stackoverflow.com/questions/50190568/net-standard-4-7-1-could-not-load-system-private-corelib-during-serialization

New extensibility may be required to help mitigate this problem for users that need to migrate from .NET Framework to modern .NET versions.

### Expected behavior
Switching from .NET Framework to a newer version, like .NET 6, ideally should be safe and not require any special interventions.

### Actual behavior
Changes in the assembly name for primitive types like `Int32` and `String` from .NET Framework to .NET Core unfortunately result in deserialization problems because of the JSON settings used by DT.AzureStorage.

Example:
![image](https://user-images.githubusercontent.com/2704139/227653406-8a456537-3302-4ac0-9cec-43b3c48a8d7c.png)

### Known workarounds
Implement a custom type binder, which is a new feature introduced [here](https://github.com/Azure/durabletask/pull/878). The test code in the PR shows how this specific problem can be mitigated.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.