Hi Team:
The problem can be simplified as below :
we have two services of our service fabric cluster:
public class ServiceA: IService
{
public async Task CallA()
{
var proxy = CreateProxy(urlofBService);
await proxy.CallB();
}
}
public class ServiceB: IService
{
public async Task CallB()
{
}
}
ServiceA will call ServiceB with remoting call.
If next time we update code to:
public class ServiceA: IService
{
public async Task CallA()
{
var proxy = CreateProxy(urlofBService);
await proxy.CallBNew();
}
}
public class ServiceB: IService
{
public async Task CallBNew()
{
}
}
we have 3 nodes in our cluster, when we do upgrade deployment, each node is placed in different upgrade domains, for example, node0 has upgraded, and node1 is upgrading, node2 is not triggered yet. At this moment, when a request hits ServiceA at node0, it will call CallBNew method, if this remoting call is routed to node2, there will be an exception, because node2 is still old code deployed. Any solution or suggestion about this problem ?
Thanks