Still can't run, sorry. It has hardcoded directories from your machine (IgniteSettings.IGNITE_HOME, IgniteSettings.WorkDirectory - commented them out), and also GlobalVariables.IgniteSettings.ConfigurationPath:
> Spring XML configuration path is invalid: D:\NGSourceCode\IgniteConfig\Labs/common_dynamiccache_client_config.xml Please make sure the zip file has everything required to run the application on any machine. On Mon, Sep 19, 2022 at 5:07 PM Charlin S <[email protected]> wrote: > Hi, > I have attached here. > Regards, > Charlin > > > On Mon, 19 Sept 2022 at 19:00, Pavel Tupitsyn <[email protected]> > wrote: > >> I get an exception when trying to run the code: >> >> Unhandled exception. System.NullReferenceException: Object reference not >> set to an instance of an object. >> at ConsoleApp4.IgniteInstance..ctor() in >> /home/pavel/Downloads/ConsoleApp4/ConsoleApp4/ConsoleApp4/IgniteInstance.cs:line >> 47 >> at ConsoleApp4.IgniteInstance.get_Instance() in >> /home/pavel/Downloads/ConsoleApp4/ConsoleApp4/ConsoleApp4/IgniteInstance.cs:line >> 33 >> at ConsoleApp4.UnitOfWork..ctor() in >> /home/pavel/Downloads/ConsoleApp4/ConsoleApp4/ConsoleApp4/UnitOfWork.cs:line >> 15 >> at ConsoleApp4.Program.Main(String[] args) in >> /home/pavel/Downloads/ConsoleApp4/ConsoleApp4/ConsoleApp4/Program.cs:line 12 >> >> On Mon, Sep 19, 2022 at 3:04 PM Charlin S <[email protected]> wrote: >> >>> Hi, >>> Cache EexpiryPolicy is 60 minutes. but cache key failing in between and >>> return data after some time so its not due to expiry policy. >>> I have prepared a separate solution and attached it here. I am sharing a >>> cache data reading time screenshot for your reference . >>> [image: image.png] >>> Regards, >>> Charlin >>> >>> >>> >>> >>> >>> On Mon, 19 Sept 2022 at 11:00, Pavel Tupitsyn <[email protected]> >>> wrote: >>> >>>> The code you provided above uses ExpiryPolicy. It might be the reason >>>> for TryGet to return false - cache entry expires. >>>> To provide a definitive answer we need a project that runs and >>>> demonstrates the problem. >>>> >>>> On Fri, Sep 16, 2022 at 5:12 PM Charlin S <[email protected]> >>>> wrote: >>>> >>>>> Hi, >>>>> sorry for inconvenience. It's 90% actual code only. I have changed >>>>> cache name and grid name as per policy. I have to prepare a separate >>>>> solution and provide you if required. >>>>> >>>>> Regards, >>>>> Charlin >>>>> >>>>> >>>>> >>>>> On Fri, 16 Sept 2022 at 19:11, Pavel Tupitsyn <[email protected]> >>>>> wrote: >>>>> >>>>>> 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 >>>>>>>>>>>>>> >>>>>>>>>>>>>>
