[megoldva] Replicated cache vs SerialVersionUID

Fórumok

Sziasztok,

Tudnátok nekem tanácsot adni, ti miként szoktátok orvosolni az elosztott cache és a class változások problémáját? Adott egy JbossCache, synchronized replicated clusterrel, és az initial state transfer be van kapcsolva. Amikor megváltozik egy cachelt osztály (és vele a SerialVersionUID), akkor a cache elhasal mikor az első node-ra releaselek, hiszen a többi node-on még a régi verzió van cachelve. Hogy lehet downtime nélkül megoldani ezt a problémát?

Ami eszembe jutott, az eléggé macerás: előszőr local only cache módban releaselek minden node-ra, és mikor mindehol az új verzió van, akkor újraindítgatom a cacheket clusterezett módban.

Előre is köszönöm a válaszokat, minden ötletet szívesen látok.
Üdv

Hozzászólások

Nem tudod elválasztani a replicated cachek "tartományát"? Tehát a nem updalt nodeok csak egymás között replikálnak, míg az új nodeok is csak az újak között? Így szép lassan mindenki átkerül az új replicated cache használók közé.

Megpróbálhatod elkerülni a problémát, azzal hogy minden classnak adsz serialversionUID-et, és csak akkor módosítod, ha nem visszafelé kompatibilisen változik az osztály. Ha csak addicionális változásaid vannak akkor jó lehet. De figyelni kell, hogy logikailag se hasaljon el a program régi változata. Érdemes a frissítendő lábról leterelni a forgalmat, majd valami takarító mechanizmust berakni, ami kipucolja a régi példányokat, amíg a másik láb is frissül. De azt is megteheted, hogy verziózod a cache példányokat serialversionUID-al, hogy biztos ne legyen ütközés.