It does not have to be your actual code, just something that demonstrates the problem
On Fri, Sep 16, 2022 at 4:40 PM Pavel Tupitsyn <[email protected]> wrote: > Can you please share a complete project that I can run and see the issue? > > On Fri, Sep 16, 2022 at 4:30 PM Charlin S <[email protected]> wrote: > >> Hi, >> Sorry I am not able to share a complete solution. bean xml attached and >> code snippet in below >> IgniteConfiguration igniteGridIg = new IgniteConfiguration(); >> igniteGridIg.AutoGenerateIgniteInstanceName = true; >> if >> (!string.IsNullOrEmpty(GlobalVariables.IgniteSettings.IGNITE_HOME)) >> { >> igniteGridIg.IgniteHome = >> GlobalVariables.IgniteSettings.IGNITE_HOME; >> } >> var gridDetails = >> GlobalVariables.IgniteSettings.GridDetails.Where(gd => >> gd.GridType.Equals("DynamicGrid", >> StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); >> //setting ignite working directory if not ignite will run >> with default work directory >> if >> (!string.IsNullOrEmpty(GlobalVariables.IgniteSettings.WorkDirectory)) >> { >> igniteGridIg.WorkDirectory = >> Path.Combine(GlobalVariables.IgniteSettings.WorkDirectory, >> gridDetails.CacheType); >> } >> if (null != gridDetails) >> { >> GridName = gridDetails.GridName; >> igniteGridIg.SpringConfigUrl = >> Path.Combine(GlobalVariables.IgniteSettings.ConfigurationPath, >> gridDetails.SpringXMLFileName); >> igniteGridIg.ConsistentId = >> Guid.NewGuid().ToString().ToUpper(); >> ICollection<string> lstJvmOptions = null; >> >> //"IgniteJVMOption": "-XX:+DisableExplicitGC,-XX:+UseG1GC,-Xms1g,-Xmx2g" >> if (string.IsNullOrEmpty(gridDetails.IgniteJVMOption)) >> { >> lstJvmOptions = >> GlobalVariables.IgniteSettings.IgniteJVMOptionDefault.Split(',').Where(x => >> !string.IsNullOrWhiteSpace(x)).ToList(); >> } >> else >> lstJvmOptions = >> gridDetails.IgniteJVMOption.Split(',').Where(x => >> !string.IsNullOrWhiteSpace(x)).ToList(); >> >> if (lstJvmOptions.Any()) >> igniteGridIg.JvmOptions = lstJvmOptions; >> int RetryCount = 0; >> while (InstanceObject == null) >> { >> try >> { >> RetryCount++; >> //Try to start Ignite >> if >> (!String.IsNullOrEmpty(ApplicationSettingKeys.Get<string>("IgniteInstanceRetryLimit")) >> && RetryCount > >> (ApplicationSettingKeys.Get<int>("IgniteInstanceRetryLimit"))) >> { >> break; >> } >> //Try to start Ignite >> if >> (String.IsNullOrEmpty(ApplicationSettingKeys.Get<string>("IgniteDynamicCacheGrid"))) >> InstanceObject = Ignition.Start(igniteGridIg); >> else >> InstanceObject = >> Ignition.TryGetIgnite(ApplicationSettingKeys.Get<string>("IgniteDynamicCacheGrid")) >> ?? Ignition.Start(igniteGridIg); >> } >> catch (Exception ex) //If failing to start Ignite, >> wait a bit for the previous AppDomain to stop the Ignite running instance... >> { >> logContextInfo.ErrorLogger(ex); >> >> } >> } >> >> public ICache<string, testModel> testModelICache { get; set; } >> >> using (new Log4NetTimeLogHelper(logContextInfo, "testModelModel", >> "testModelModel")) >> { >> >> testModelICache = testModelICache ?? >> InstanceObject.GetCache<string, testModelModel>("testModelModel") >> .WithExpiryPolicy(new ExpiryPolicy( >> TimeSpan.FromMinutes(GlobalVariables.testModelExpiryTime), >> TimeSpan.FromMinutes(GlobalVariables.testModelExpiryTime), >> TimeSpan.FromMinutes(GlobalVariables.testModelExpiryTime) >> )); >> } >> >> >> public CacheServiceResponse GetCacheById(string Key) >> { >> CacheServiceResponse response = new CacheServiceResponse(); >> var model = (T)Activator.CreateInstance(typeof(T)); >> try >> { >> >> IgniteCache.TryGet(Key, out var value); >> var k = IgniteCache.TryGetAsync(Key); >> if (null != value) >> { >> model = (T)value; >> response.SingleObject = model; >> response.Status = true; >> response.StatusCode = >> System.Net.HttpStatusCode.OK; >> } >> else >> { >> response.Status = false; >> response.Message = "Given key " + Key + " not >> present in the cache."; >> response.StatusCode = >> System.Net.HttpStatusCode.NoContent; >> } >> >> }cache(exception ex) >> { >> } >> } >> >> Regards, >> Charlin >> >> >> On Fri, 16 Sept 2022 at 18:22, Pavel Tupitsyn <[email protected]> >> wrote: >> >>> Can you share a reproducer? >>> >>> On Fri, Sep 16, 2022 at 3:13 PM Charlin S <[email protected]> >>> wrote: >>> >>>> Hi, >>>> Data loss is not possible, because some other time I am able to read >>>> data with the same key. >>>> >>>> FYI: data update not in our workflow(Please ignore my previous mail >>>> statement it is possible to update the cache by another >>>> process/workflow). Always data read only once cache inserted by key. >>>> >>>> Regards, >>>> Charlin >>>> >>>> >>>> On Fri, 16 Sept 2022 at 17:21, Pavel Tupitsyn <[email protected]> >>>> wrote: >>>> >>>>> Ok, so the issue is that the key is not present in the cache, and this >>>>> is not expected. >>>>> Data loss is possible if one of Ignite nodes goes down, and backups >>>>> [1] are not configured. >>>>> Please check server logs for errors. >>>>> >>>>> [1] >>>>> https://ignite.apache.org/docs/latest/configuring-caches/configuring-backups >>>>> >>>>> On Fri, Sep 16, 2022 at 2:38 PM Charlin S <[email protected]> >>>>> wrote: >>>>> >>>>>> Hi, >>>>>> There is no exception and executing the else part. it is possible to >>>>>> update the cache by another process/workflow. >>>>>> //response is custom class object >>>>>> var model = (T)Activator.CreateInstance(typeof(T)); >>>>>> IgniteCache.TryGet(Key, out var value); >>>>>> if (null != value) >>>>>> { >>>>>> model = (T)value; >>>>>> response.SingleObject = model; >>>>>> response.Status = true; >>>>>> response.StatusCode = >>>>>> System.Net.HttpStatusCode.OK; >>>>>> } >>>>>> else >>>>>> { >>>>>> response.Status = false; >>>>>> response.Message = "Given key " + Key + " not >>>>>> present in the cache."; >>>>>> response.StatusCode = >>>>>> System.Net.HttpStatusCode.NoContent; >>>>>> } >>>>>> >>>>>> Regards, >>>>>> Charlin >>>>>> >>>>>> On Fri, 16 Sept 2022 at 16:53, Pavel Tupitsyn <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> Hi Charlin, >>>>>>> >>>>>>> Please provide full exception details. >>>>>>> >>>>>>> On Fri, Sep 16, 2022 at 2:04 PM Charlin S <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi All, >>>>>>>> Cache.TryGet failed to read intermittently and was unable to read >>>>>>>> some time later. >>>>>>>> >>>>>>>> having 3 server nodes and 11 client nodes. cache mode is partition >>>>>>>> and atomicitymode not been set. >>>>>>>> >>>>>>>> Regards, >>>>>>>> Charlin >>>>>>>> >>>>>>>>
