Hi, I already attached server config in the same mail thread( along with sample code).
Regards, Charlin On Tue, 20 Sept 2022 at 11:50, Pavel Tupitsyn <[email protected]> wrote: > Now the client starts, but cannot connect to a server. How do I start a > server, do you use a config file or something else? > > On Tue, Sep 20, 2022 at 9:15 AM Charlin S <[email protected]> wrote: > >> Hi, >> Sorry for inconvenience, I have removed local machine path dependency. >> >> Regards, >> Charlin >> >> >> On Tue, 20 Sept 2022 at 11:04, Pavel Tupitsyn <[email protected]> >> wrote: >> >>> 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 >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>
