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