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