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