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