Bonjour à tous,
voilà nous avons déployé sur Azure une application web MVC sous frome d'une Web app mais en 3 instances.
J'ai un objet data_lock comme ceci dans la code, pour gérer les accès concurrent sur un chemin de données DATA.
protected void Application_Start()
{
private static object data_lock = new object();
...
lock(data_lock)
{
Ecriture dans un chemin(C:\...\Data)
}
}
Ces 3 instances tentent d'accéder au même répertoire Data. Celle qui fait le travail dedans la première, les autres ne doivent pas le faire. Donc j'ai le code qui contrôle ça.
Mon problème vu que j'ai 3 instances elles sont indépendantes donc le lock ne marche pas car la variable data_lock est spécifique à chaque instance. Et donc les instances des fois elles arrivent à accéder en même temps sur le chemin et ça crée une instabilité dans le site. Si j'avais une seule instance, le problème ne se serait pas posé.
En gros j'ai besoin d'écrire dans le chemin DATA. Il faut que ce soit une seule instance qui puisse y accéder jusqu'à ce qu'elle libère la ressource. Après l'autre instance si elle y accède elle ne fera rien car l'instance d'avant a déjà fait le travail qu'i l fallait faire dans le répertoire DATA.
Merci pour votre aide.
Ps: j'ai trouvé des notions genre mutex distribué , mais s'il y a une solution plus adapté je suis preneur.
Merci beaucoup.
Partager