Kişi bilgileri gizlidir. Logo çalışanları görebilir.

j-Platform Rest Servis ile kayıt aktarırken bazen Numaralandırma Şablonu'nda atlamalar oluyor

  j-Platform/REST Diğer

Merhaba,


Logo j-Platform ürününe, j-Platform Rest Servis üzerinden sipariş, irsaliye ve fatura aktarımları gerçekleştiriyoruz.

POST edilen JSON deseninde, fiş numarası alanlarına karşılık gelen, "number" alanlarına tilde(~) işareti atayarak ya da boş geçerek, oluşan kaydın Numaralandırma Şablonu üzerinden sıradaki numarayı almasını sağlıyoruz.


Oluşan kayıtları kontrol ettiğimizde zaman zaman fiş numaralarında, numaralandırma şablonundaki değerlerde atlamaların olduğunu görüyoruz. Örnek vermek gerekise;


Abc202200001
Abc202200002
Abc202200003
Abc202200006
Abc202200007
Abc202200008
Abc202200015


Abc202200003'ten sonra Abc202200004 ve Abc202200004 numaraların atlandığını görüyoruz. Aynı durum Abc202200008 numaralı faturadan sonra da gerçekleşmiş.


Bu durum neden olur? Bu konuda yardımcı olabilir misiniz?




Kişi bilgileri gizlidir. Logo çalışanları görebilir.
Onaylanmış Cevap

Merhaba,


Logo j-Platform ürünü, Numaralandırma Şablonu'ndan sıradaki numarayı rezerv ve tahsis etme işlerini, Hazelcast adında bir teknolojiden yararlanarak in-memory'de gerçekleştirir.


Logo j-Platform sistem tabloları arasında, Hazelcast'in ihtiyaç duyduğu bilgilerin tutulduğu S_HC_CACHES isimli bir tablo bulunur.

Birbirine erişimi olan herhangi bir ortamda bulunan bir test, bir de canlı uygulama varsa ve bu iki uygulamanın veritabanlarında bulunan S_HC_CACHES tablolarında, iki ortamın da IP bilgisi bulunuyorsa, bu ortamlar dağıtık hazelcast cache’leri bakımından birbirine bağlanır. Bu durumda; bir ortamda bir sipariş, irsaliye, fatura vesaire için alınan numara, diğer ortamın da son numara cache’ine yansır. Yani eğer iki instance hazelcast açısından bağlanırsa, bu iki ortam aynı numara şablonu ve son numarası üzerinden numaraları paylaşarak alırlar. Bu da her iki instance’da da fatura numaralarının atlamasına yol açabilir.

Bu sebeple, her iki uygulamanın veritabanında da S_HC_CACHES tablolarında, sadece ilgili ortamların IP bilgileri bulunmalıdır. Eğer hem test, hem canlı uygulamalar aynı makine üzerinde ise, IP tek olduğundan, S_HC_CACHES tablosunda tek IP olur ama iki instance aynı IP üzerinde çalıştığı için, bu durum yine Hazelcast'lerin birbirini görmesine sebep olur.

Bu sebeple en etkili yol; test ve canlı uygulamanın, IP olarak farklı makinelerde bulunması ve yedekleme ve geri yükleme gibi canlı ortamdan test ortamına veri taşıma şeklinde işlemlerden sonra S_HC_CACHES tablolarının mutlaka boşaltılmasıdır.

Uygulamaların Hazelcast açısından birbirlerine bağlanıp bağlanmadığı, uygulama kurulum klasörü altındaki, Logs klasöründe yer alan hazelcast.log dosyasına bakılarak anlaşılabilir.


Bilgilerinize, kolay gelsin.


11/03/22 14:58

Cevap vermek için giriş yapmanız gerekmektedir.