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
>>>>>>>>>
>>>>>>>>>

Reply via email to