Hi,
Thank you for your time and effort. Please check if time permits you. Would
be great help ..

Regards,
Charlin


On Wed, 21 Sept 2022 at 16:31, Pavel Tupitsyn <[email protected]> wrote:

> Sorry, the code you sent is not working.
>
> - There is a stack overflow due to recursion
> at UnitOfWork.testModelRepository
> - Cache does not exist exception at IgniteCacheInstance (changed
> to GetOrCreateCache)
> - All exceptions are swallowed (empty catch blocks)
>
> I made it work with some changes, now I get exit code 0, not sure what to
> do with that.
>
> On Wed, Sep 21, 2022 at 1:09 PM Charlin S <[email protected]> wrote:
>
>> Hi,
>> Please let me know if there are any findings in my configuration or
>> implementation.
>>
>> Regards,
>> Charlin
>>
>>
>> On Tue, 20 Sept 2022 at 11:51, Charlin S <[email protected]> wrote:
>>
>>> 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
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>

Reply via email to