ignite-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pavel Tupitsyn <ptupit...@gridgain.com>
Subject Re: SQLServer Persistence Store Error
Date Tue, 05 Apr 2016 07:30:18 GMT
Satya, zip file downloaded fine, I'll investigate it and get to you later.

Regarding [Serializable]: cached objects in Ignite are serialized and sent
over the network.
So your entities should be set up for serialization, one way or another,
see details: https://apacheignite-net.readme.io/docs/serialization
It is possible to serialize auto-generated classes without modifying them,
by providing them in BinaryConfiguration. I'll check attached code and see
if it works.

IGNITE_H2_DEBUG_CONSOLE: just add the following line anywhere before
Ignition.Start: Environment.SetEnvironmentVariable("IGNITE_H2_DEBUG_CONSOLE"
, "true");

Pavel.

On Tue, Apr 5, 2016 at 7:16 AM, Murthy Kakarlamudi <ksatya@gmail.com> wrote:

> Hi Pavel,
>    I was playing around with different options and once I specified
> [Serializable] annotation at the entity class level, I was able to
> successfully insert into cache. With this setting LoadCache() method is
> working as well. Not sure if this is the right approach. I will not prefer
> this as this needs an update to a auto-generated class and any subsequent
> updates might overide the manual settings.
>
> On a separate note, is there a way I can query the cache using sql
> console. In java, I can set IGNITE_H2_DEBUG_CONSOLE to query the cache.
> Wondering if there is an equivalent on .NET side.
>
> Thanks,
> Satya.
>
> On Mon, Apr 4, 2016 at 8:08 PM, Murthy Kakarlamudi <ksatya@gmail.com>
> wrote:
>
>> Hi Pavel,
>>    I am not able to send the solution zip in gmail. It is blocking as the
>> zip file contains executables. Can you please check if you can download the
>> solution from the below location:
>>
>> https://drive.google.com/open?id=0B8lM91-_3MwRS3pFU2JwRjJkYVU
>>
>> Thanks,
>> Murthy.
>>
>> On Mon, Apr 4, 2016 at 11:09 AM, Pavel Tupitsyn <ptupitsyn@gridgain.com>
>> wrote:
>>
>>> LoadCache arguments are serialized and passed over network. Cache
>>> instance can't be used as a LoadCache argument.
>>> Please try to do a cache put directly in the main method:
>>>             using (var ignite = Ignition.Start(cfg))
>>>             {
>>>                 var cache = ignite.GetCache<int,
>>> CustomTransactionsDetail>(null);
>>>                 cache.Put(1, entities.CustomTransactionsDetails.First()
>>> );
>>>             }
>>>
>>> I suspect there is an issue with serializing CustomTransactionsDetail
>>> instances.
>>> Entity Framework POCO proxies can't be serialized by Ignite
>>> automatically.
>>> You have to either disable proxies (
>>> https://msdn.microsoft.com/en-us/library/dd456853(v=vs.100).aspx), or
>>> implement IBinarizable with manual serialization.
>>>
>>> If you send me your whole solution in a zip file, I'll be able to
>>> investigate further.
>>>
>>> Thanks,
>>>
>>> Pavel.
>>>
>>> On Mon, Apr 4, 2016 at 5:53 PM, Murthy Kakarlamudi <ksatya@gmail.com>
>>> wrote:
>>>
>>>> Hi Pavel,
>>>>     I was trying to do that before and ran into issues passing cache
>>>> object to my CacheAdapter implementation which is in a different dll. Can
>>>> you please help where I went wrong:
>>>>
>>>> In my main program, I was passing cache in LoadCache method:
>>>> using (var ignite = Ignition.Start(cfg))
>>>>             {
>>>>                 Console.WriteLine(">>> Cache query example started");
>>>>                 var cache = ignite.GetCache<int,
>>>> CustomTransactionsDetail>(null);
>>>>                 *cache.LoadCache(null,cache);*
>>>>                 Console.WriteLine(">> Organization Cache Size: " +
>>>> cache.GetSize());
>>>>                 Console.ReadLine();
>>>>             }
>>>>
>>>> In my CacheStoreAdapter implementation, I tried to access Cache as
>>>> below:
>>>>
>>>> public override void LoadCache(Action<object, object> act, params
>>>> object[] args)
>>>>         {
>>>>             try {
>>>>                * ICache cache = (ICache)args[0]; // Throwing an error
>>>> here.*
>>>>                 var customTxnDetailsList =
>>>> entities.CustomTransactionsDetails;
>>>>                 // Iterate over whole underlying store and call act on
>>>> each entry to load it into the cache.
>>>>                 foreach (CustomTransactionsDetail entry in
>>>> customTxnDetailsList)
>>>>                 {
>>>>                     Console.WriteLine("Adding to cache: {0} {1}",
>>>> entry.CustomTransDetailID, entry);
>>>>                     //act(entry.CustomTransDetailID, entry);
>>>>
>>>>                 }
>>>>             }catch(Exception e)
>>>>             {
>>>>                 Console.WriteLine("Exception is {0}", e);
>>>>             }
>>>>
>>>>         }
>>>>
>>>> On Mon, Apr 4, 2016 at 8:26 AM, Pavel Tupitsyn <ptupitsyn@gridgain.com>
>>>> wrote:
>>>>
>>>>> Instead of LoadCache, can you try a simple cache put and see what
>>>>> happens?
>>>>>
>>>>> cache[1] = new CustomTransactionsDetail();
>>>>>
>>>>> and with entity from EF:
>>>>>
>>>>> cache[2] = entities.CustomTransactionsDetails.First();
>>>>>
>>>>> Pavel.
>>>>>
>>>>> On Mon, Apr 4, 2016 at 3:20 PM, Murthy Kakarlamudi <ksatya@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Sorry....attached the wrong version. Below is the full entity class
>>>>>> and the CacheStore implementation.
>>>>>>
>>>>>> namespace MyIgnite
>>>>>> {
>>>>>>     using System;
>>>>>>     using System.Collections.Generic;
>>>>>>
>>>>>>     public partial class CustomTransactionsDetail
>>>>>>     {
>>>>>>         public Nullable<int> TransactionID { get; set; }
>>>>>>         public string InstrumentTypeName { get; set; }
>>>>>>         public string InstrumentTypeShortName { get; set; }
>>>>>>         public string DealType { get; set; }
>>>>>>         public string PutCall { get; set; }
>>>>>>         public Nullable<System.DateTime> Expiry { get; set;
}
>>>>>>         public string Side { get; set; }
>>>>>>         public Nullable<System.DateTime> Comodity1Month { get;
set; }
>>>>>>         public Nullable<System.DateTime> Comodity2Month { get;
set; }
>>>>>>         public Nullable<double> Asset1 { get; set; }
>>>>>>         public Nullable<double> Asset2 { get; set; }
>>>>>>         public Nullable<long> QtyAsset1 { get; set; }
>>>>>>         public Nullable<long> QtyAsset2 { get; set; }
>>>>>>         public Nullable<double> StrikePrice { get; set; }
>>>>>>         public Nullable<double> RiskFreeRate { get; set; }
>>>>>>         public Nullable<double> CostOfCarry1 { get; set; }
>>>>>>         public Nullable<double> CostOfCarry2 { get; set; }
>>>>>>         public Nullable<double> VolatilityAsset1 { get; set;
}
>>>>>>         public Nullable<double> VolatilityAsset2 { get; set;
}
>>>>>>         public Nullable<double> FixedPrice { get; set; }
>>>>>>         public Nullable<int> BUID { get; set; }
>>>>>>         public Nullable<int> PortfolioID { get; set; }
>>>>>>         public Nullable<int> StrategyID { get; set; }
>>>>>>         public Nullable<int> CPID { get; set; }
>>>>>>         public Nullable<int> TraderID { get; set; }
>>>>>>         public Nullable<int> InsTypeID { get; set; }
>>>>>>         public string ListOfAllIndexText { get; set; }
>>>>>>         public Nullable<System.DateTime> MvStartMonth { get;
set; }
>>>>>>         public string SourceSysName { get; set; }
>>>>>>         public Nullable<System.DateTime> EndOfDayDate { get;
set; }
>>>>>>         public Nullable<int> DealSideGPID { get; set; }
>>>>>>         public Nullable<int> ProfileID { get; set; }
>>>>>>         public Nullable<int> InstrumentSeqNo { get; set; }
>>>>>>         public Nullable<int> InstrumentSourceID { get; set;
}
>>>>>>         public string EventSourceName { get; set; }
>>>>>>         public string CFlowTypeID { get; set; }
>>>>>>         public string RTStatName { get; set; }
>>>>>>         public string TranStatName { get; set; }
>>>>>>         public Nullable<long> SequenceNo { get; set; }
>>>>>>         public Nullable<System.DateTime> TimeStamp { get; set;
}
>>>>>>         public Nullable<int> CustomTransHeaderID { get; set;
}
>>>>>>         public int CustomTransDetailID { get; set; }
>>>>>>         public string IndexName1 { get; set; }
>>>>>>         public string IndexName2 { get; set; }
>>>>>>         public Nullable<double> LTD_PNL { get; set; }
>>>>>>     }
>>>>>> }
>>>>>>
>>>>>>  public override void LoadCache(Action<object, object> act,
params
>>>>>> object[] args)
>>>>>>         {
>>>>>>             try {
>>>>>>                 var customTxnDetailsList =
>>>>>> entities.CustomTransactionsDetails;
>>>>>>                 // Iterate over whole underlying store and call act
>>>>>> on each entry to load it into the cache.
>>>>>>                 foreach (CustomTransactionsDetail entry in
>>>>>> customTxnDetailsList)
>>>>>>                 {
>>>>>>                     Console.WriteLine("Adding to cache: {0}",
>>>>>> entry.CustomTransDetailID);
>>>>>>                     act(entry.CustomTransDetailID, entry);
>>>>>>
>>>>>>                 }
>>>>>>             }catch(Exception e)
>>>>>>             {
>>>>>>                 Console.WriteLine("Exception is {0}", e);
>>>>>>             }
>>>>>>
>>>>>>         }
>>>>>>
>>>>>> static void Main(string[] args)
>>>>>>         {
>>>>>>             var cfg = new IgniteConfiguration
>>>>>>             {
>>>>>>                 SpringConfigUrl =
>>>>>> @"C:\Data\Professional\dotnet\workspace\MyIgnite\MyIgniteConsole\config\ignite.xml",
>>>>>>                 JvmOptions = new List<string> { "-Xms512m",
>>>>>> "-Xmx1024m" }
>>>>>>             };
>>>>>>             //Ignition.ClientMode = true;
>>>>>>             using (var ignite = Ignition.Start(cfg))
>>>>>>             {
>>>>>>                 Console.WriteLine(">>> Cache query example
started");
>>>>>>                 var cache = ignite.GetCache<int,
>>>>>> CustomTransactionsDetail>(null);
>>>>>>
>>>>>>                 cache.LoadCache(null);
>>>>>>
>>>>>>                 Console.ReadLine();
>>>>>>             }
>>>>>>
>>>>>>
>>>>>>             Console.ReadLine();
>>>>>>         }
>>>>>>
>>>>>> There are no other parts to these files. These POCOs are generated
by
>>>>>> Entity Framework. Please let me know if you need additional information.
>>>>>>
>>>>>> Satya.
>>>>>>
>>>>>> On Mon, Apr 4, 2016 at 8:11 AM, Pavel Tupitsyn <
>>>>>> ptupitsyn@gridgain.com> wrote:
>>>>>>
>>>>>>> Satya,
>>>>>>>
>>>>>>> In your code above there is "act(entry.personDetailID, entry);",
>>>>>>> but there is no personDetailID member in the CustomTransactionsDetail
>>>>>>> class.
>>>>>>> Are you sure this is the correct one? Also, it is a partial class
-
>>>>>>> are there any parts in other files?
>>>>>>>
>>>>>>> Can you attach full source code of your application?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Pavel.
>>>>>>>
>>>>>>> On Mon, Apr 4, 2016 at 2:59 PM, Murthy Kakarlamudi <ksatya@gmail.com
>>>>>>> > wrote:
>>>>>>>
>>>>>>>> Below is my entity. I am not doing any serialization currently
>>>>>>>> while storing in the cache.
>>>>>>>>
>>>>>>>> namespace MyIgnite
>>>>>>>> {
>>>>>>>>     using System;
>>>>>>>>     using System.Collections.Generic;
>>>>>>>>
>>>>>>>>     public partial class CustomTransactionsDetail
>>>>>>>>     {
>>>>>>>>         public Nullable<int> TransactionID { get; set;
}
>>>>>>>>         public string TypeName { get; set; }
>>>>>>>>         public Nullable<System.DateTime> Expiry { get;
set; }
>>>>>>>>         public string Side { get; set; }
>>>>>>>>         public Nullable<System.DateTime> TimeStamp
{ get; set; }
>>>>>>>>         public Nullable<int> CustomTransHeaderID {
get; set; }
>>>>>>>>         public int CustomTransDetailID { get; set; }
>>>>>>>>
>>>>>>>>     }
>>>>>>>> }
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Satya.
>>>>>>>>
>>>>>>>> On Mon, Apr 4, 2016 at 7:50 AM, Pavel Tupitsyn <
>>>>>>>> ptupitsyn@gridgain.com> wrote:
>>>>>>>>
>>>>>>>>> Satya,
>>>>>>>>>
>>>>>>>>> Looks like exception comes from your entity member(s)
during
>>>>>>>>> serialization.
>>>>>>>>>
>>>>>>>>> Can you please attach your entity class code?
>>>>>>>>> * Does it have any navigation properties that may cause
SQL
>>>>>>>>> queries?
>>>>>>>>> * How do you serialize it in Ignite? (Do you implement
>>>>>>>>> IBinarizable?)
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>>
>>>>>>>>> Pavel.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Mon, Apr 4, 2016 at 2:13 PM, Murthy Kakarlamudi <
>>>>>>>>> ksatya@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Pavel,
>>>>>>>>>>    Thanks for your response. I stepped through the
LoadCache
>>>>>>>>>> method in debug mode and noticed that it is failing
at the act() method.
>>>>>>>>>> Below is my code for LoacCache.
>>>>>>>>>>
>>>>>>>>>> public override void LoadCache(Action<object,
object> act, params
>>>>>>>>>> object[] args)
>>>>>>>>>>         {
>>>>>>>>>>             var personDetailsList = entities.personDetails;
>>>>>>>>>>             // Iterate over whole underlying store
and call act
>>>>>>>>>> on each entry to load it into the cache.
>>>>>>>>>>             foreach (personDetail entry in personDetailsList)
>>>>>>>>>>             {
>>>>>>>>>>                 Console.WriteLine("Adding to cache:
" +
>>>>>>>>>> entry.personDetailID);
>>>>>>>>>>                 act(entry.personDetailID, entry);
>>>>>>>>>>
>>>>>>>>>>             }
>>>>>>>>>>
>>>>>>>>>>         }
>>>>>>>>>>
>>>>>>>>>> I can see the statement: "Adding to cache: " in the
node output
>>>>>>>>>> and the control hangs at the next line executing
the "act" method and then
>>>>>>>>>> it throws SQLException Timeout. Not sure why the
"act" method is taking so
>>>>>>>>>> much time to store the entries in cache.
>>>>>>>>>>
>>>>>>>>>> For testing, I commented out "act" statement and
the program
>>>>>>>>>> completed looping through all the entries returned
by Entity Framework
>>>>>>>>>> without any errors.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Satya.
>>>>>>>>>>
>>>>>>>>>> On Mon, Apr 4, 2016 at 4:40 AM, Pavel Tupitsyn <
>>>>>>>>>> ptupitsyn@gridgain.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Satya,
>>>>>>>>>>>
>>>>>>>>>>> "*Timeout expired.  The timeout period elapsed
prior to
>>>>>>>>>>> completion of the operation or the server is
not responding.*"
>>>>>>>>>>> This is an SQL exception. Please make sure that
your entity
>>>>>>>>>>> connection works.
>>>>>>>>>>> You can set a breakpoint on the first line of
LoadCache method,
>>>>>>>>>>> step over your code and see what happens. Or
wrap it in try-catch block.
>>>>>>>>>>>
>>>>>>>>>>> Meanwhile, looks like cache store error messages
are not very
>>>>>>>>>>> informative.
>>>>>>>>>>> I've added a Jira ticket, we'll fix it shortly:
>>>>>>>>>>> https://issues.apache.org/jira/browse/IGNITE-2943
>>>>>>>>>>>
>>>>>>>>>>> Thank you,
>>>>>>>>>>>
>>>>>>>>>>> Pavel
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Apr 4, 2016 at 7:07 AM, Murthy Kakarlamudi
<
>>>>>>>>>>> ksatya@gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hello all,
>>>>>>>>>>>>    I was able to resolve the error I posted
above. I had to
>>>>>>>>>>>> basically add the relevant EntityFramwork
references in the solution that
>>>>>>>>>>>> runs my Ignite server node. After successfully
creating the cache, however
>>>>>>>>>>>> I am running into the below timeout issue:
>>>>>>>>>>>>
>>>>>>>>>>>> [00:02:37] Ignite node started OK (id=cf8c5e00)
>>>>>>>>>>>> [00:02:37] Topology snapshot [ver=1, servers=1,
clients=0,
>>>>>>>>>>>> CPUs=4, heap=0.89GB]
>>>>>>>>>>>> *>>> Cache query example started*
>>>>>>>>>>>> *Adding to cache: 228505*
>>>>>>>>>>>> [00:03:10,524][SEVERE][pub-#10%null%][GridJobWorker]
Failed to
>>>>>>>>>>>> execute job [jobId=bcc9f6fd351-cf8c5e00-c86f-4e58-b0ad-6754896baf34,
>>>>>>>>>>>> ses=GridJobSessionImpl [ses=GridTaskSessionImpl
>>>>>>>>>>>> [taskName=o.a.i.i.processors.cache.GridCacheAdapter$LoadCacheClosure,
>>>>>>>>>>>> dep=LocalDeployment [super=GridDeployment
[ts=1459742547098,
>>>>>>>>>>>> depMode=SHARED, clsLdr=sun.misc.Launcher$AppClassLoader@764c12b6,
>>>>>>>>>>>> clsLdrId=a9c9f6fd351-cf8c5e00-c86f-4e58-b0ad-6754896baf34,
userVer=0,
>>>>>>>>>>>> loc=true, sampleClsName=java.lang.String,
pendingUndeploy=false,
>>>>>>>>>>>> undeployed=false, usage=0]],
>>>>>>>>>>>> taskClsName=o.a.i.i.processors.cache.GridCacheAdapter$LoadCacheClosure,
>>>>>>>>>>>> sesId=acc9f6fd351-cf8c5e00-c86f-4e58-b0ad-6754896baf34,
>>>>>>>>>>>> startTime=1459742557568, endTime=9223372036854775807,
>>>>>>>>>>>> taskNodeId=cf8c5e00-c86f-4e58-b0ad-6754896baf34,
>>>>>>>>>>>> clsLdr=sun.misc.Launcher$AppClassLoader@764c12b6,
>>>>>>>>>>>> closed=false, cpSpi=null, failSpi=null, loadSpi=null,
usage=1,
>>>>>>>>>>>> fullSup=false, subjId=cf8c5e00-c86f-4e58-b0ad-6754896baf34,
>>>>>>>>>>>> mapFut=IgniteFuture [orig=GridFutureAdapter
[resFlag=0, res=null,
>>>>>>>>>>>> startTime=1459742557584, endTime=0, ignoreInterrupts=false,
lsnr=null,
>>>>>>>>>>>> state=INIT]]], jobId=bcc9f6fd351-cf8c5e00-c86f-4e58-b0ad-6754896baf34]]
>>>>>>>>>>>> class org.apache.ignite.IgniteException:
class
>>>>>>>>>>>> org.apache.ignite.IgniteException: Timeout
expired.  The timeout period
>>>>>>>>>>>> elapsed prior to completion of the operation
or the server is not
>>>>>>>>>>>> responding.
>>>>>>>>>>>>         at
>>>>>>>>>>>> org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2.execute(GridClosureProcessor.java:1792
>>>>>>>>>>>>
>>>>>>>>>>>> Apache.Ignite.Core.Cache.Store.CacheStoreException
was unhandled
>>>>>>>>>>>>   HResult=-2146233088
>>>>>>>>>>>>   Message=class org.apache.ignite.IgniteException:
*Timeout
>>>>>>>>>>>> expired.  The timeout period elapsed prior
to completion of the operation
>>>>>>>>>>>> or the server is not responding.*
>>>>>>>>>>>>   Source=Apache.Ignite.Core
>>>>>>>>>>>>   StackTrace:
>>>>>>>>>>>>        at
>>>>>>>>>>>> Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.Error(Void*
target,
>>>>>>>>>>>> Int32 errType, SByte* errClsChars, Int32
errClsCharsLen, SByte*
>>>>>>>>>>>> errMsgChars, Int32 errMsgCharsLen, Void*
errData, Int32 errDataLen)
>>>>>>>>>>>>        at
>>>>>>>>>>>> Apache.Ignite.Core.Impl.Unmanaged.IgniteJniNativeMethods.TargetInStreamOutLong(Void*
>>>>>>>>>>>> ctx, Void* target, Int32 opType, Int64 memPtr)
>>>>>>>>>>>>        at
>>>>>>>>>>>> Apache.Ignite.Core.Impl.Unmanaged.UnmanagedUtils.TargetInStreamOutLong(IUnmanagedTarget
>>>>>>>>>>>> target, Int32 opType, Int64 memPtr)
>>>>>>>>>>>>        at Apache.Ignite.Core.Impl.PlatformTarget.DoOutOp(Int32
>>>>>>>>>>>> type, Action`1 action)
>>>>>>>>>>>>        at MyIgniteConsole.Program.Main(String[]
args) in
>>>>>>>>>>>> C:\Data\Professional\dotnet\workspace\MyIgnite\MyIgniteConsole\Program.cs:line
>>>>>>>>>>>> 29
>>>>>>>>>>>>        at System.AppDomain._nExecuteAssembly(RuntimeAssembly
>>>>>>>>>>>> assembly, String[] args)
>>>>>>>>>>>>        at System.AppDomain.ExecuteAssembly(String
assemblyFile,
>>>>>>>>>>>> Evidence assemblySecurity, String[] args)
>>>>>>>>>>>>        at
>>>>>>>>>>>> Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
>>>>>>>>>>>>        at
>>>>>>>>>>>> System.Threading.ExecutionContext.RunInternal(ExecutionContext
>>>>>>>>>>>> executionContext, ContextCallback callback,
Object state, Boolean
>>>>>>>>>>>> preserveSyncCtx)
>>>>>>>>>>>>        at
>>>>>>>>>>>> System.Threading.ExecutionContext.Run(ExecutionContext
executionContext,
>>>>>>>>>>>> ContextCallback callback, Object state, Boolean
preserveSyncCtx)
>>>>>>>>>>>>        at
>>>>>>>>>>>> System.Threading.ExecutionContext.Run(ExecutionContext
executionContext,
>>>>>>>>>>>> ContextCallback callback, Object state)
>>>>>>>>>>>>        at System.Threading.ThreadHelper.ThreadStart()
>>>>>>>>>>>>   InnerException:
>>>>>>>>>>>>
>>>>>>>>>>>> From my main program, I am making below call:
>>>>>>>>>>>>  cache.LoadCache(null);
>>>>>>>>>>>>
>>>>>>>>>>>> In my store implementation I have the following
overide method:
>>>>>>>>>>>>  public override void LoadCache(Action<object,
object> act,
>>>>>>>>>>>> params object[] args)
>>>>>>>>>>>>         {
>>>>>>>>>>>>             var personDetailsList = entities.personDetails;
>>>>>>>>>>>>             // Iterate over whole underlying
store and call act
>>>>>>>>>>>> on each entry to load it into the cache.
>>>>>>>>>>>>             foreach (personDetail entry in
personDetailsList)
>>>>>>>>>>>>             {
>>>>>>>>>>>>                 Console.WriteLine("Adding
to cache: " +
>>>>>>>>>>>> entry.personDetailID);
>>>>>>>>>>>>                 act(entry.personDetailID,
entry);
>>>>>>>>>>>>
>>>>>>>>>>>>             }
>>>>>>>>>>>>
>>>>>>>>>>>>         }
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> thanks in advance for your help...
>>>>>>>>>>>>
>>>>>>>>>>>> Satya.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Sat, Apr 2, 2016 at 11:49 AM, Murthy Kakarlamudi
<
>>>>>>>>>>>> ksatya@gmail.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>    In my .NET application, I have an
underlying SQL Server DB
>>>>>>>>>>>>> that I am planning to access using Ignite
Persistence feature. I was
>>>>>>>>>>>>> following the StoreExample provided in
the examples and created the ignite
>>>>>>>>>>>>> configuration accordingly.
>>>>>>>>>>>>>
>>>>>>>>>>>>> <property name="cacheConfiguration">
>>>>>>>>>>>>>         <list>
>>>>>>>>>>>>>           <bean
>>>>>>>>>>>>> class="org.apache.ignite.configuration.CacheConfiguration">
>>>>>>>>>>>>>             <property name="writeThrough"
value="true"/>
>>>>>>>>>>>>>             <property name="readThrough"
value="true"/>
>>>>>>>>>>>>>             <property name="cacheStoreFactory">
>>>>>>>>>>>>>               <bean
>>>>>>>>>>>>> class="org.apache.ignite.platform.dotnet.PlatformDotNetCacheStoreFactory">
>>>>>>>>>>>>>                 <property name="typeName"
>>>>>>>>>>>>> value="MyIgnite.SQLServerStore, MyIgnite"/>
>>>>>>>>>>>>>               </bean>
>>>>>>>>>>>>>             </property>
>>>>>>>>>>>>>           </bean>
>>>>>>>>>>>>>         </list>
>>>>>>>>>>>>>       </property>
>>>>>>>>>>>>>
>>>>>>>>>>>>> My SQLServerStore which is part of MyIgnite
dll is as below. I
>>>>>>>>>>>>> am using EntityFramework as ORM to access
underlying SQLServer.
>>>>>>>>>>>>>
>>>>>>>>>>>>> class SQLServerStore : CacheStoreAdapter
>>>>>>>>>>>>>     {
>>>>>>>>>>>>>         private TestEntities entities;
>>>>>>>>>>>>>         public SQLServerStore()
>>>>>>>>>>>>>         {
>>>>>>>>>>>>>             entities = new TestEntities();
>>>>>>>>>>>>>         }
>>>>>>>>>>>>>
>>>>>>>>>>>>>         /// <summary>
>>>>>>>>>>>>>         /// Loads all values from underlying
persistent
>>>>>>>>>>>>> storage.
>>>>>>>>>>>>>         /// This method gets called as
a result of <see
>>>>>>>>>>>>> cref="ICache{TK,TV}.LoadCache"/> call.
>>>>>>>>>>>>>         /// </summary>
>>>>>>>>>>>>>         /// <param name="act">Action
that loads a cache
>>>>>>>>>>>>> entry.</param>
>>>>>>>>>>>>>         /// <param name="args">Optional
arguments.</param>
>>>>>>>>>>>>>         public override void LoadCache(Action<object,
object>
>>>>>>>>>>>>> act, params object[] args)
>>>>>>>>>>>>>         {
>>>>>>>>>>>>>             var personDetailsList = entities.PersonDetails;
>>>>>>>>>>>>>             // Iterate over whole underlying
store and call
>>>>>>>>>>>>> act on each entry to load it into the
cache.
>>>>>>>>>>>>>             foreach (personDetail entry
in personDetailsList)
>>>>>>>>>>>>>             {
>>>>>>>>>>>>>                 act(entry.personD, entry);
>>>>>>>>>>>>>             }
>>>>>>>>>>>>>
>>>>>>>>>>>>>         }
>>>>>>>>>>>>> }
>>>>>>>>>>>>>
>>>>>>>>>>>>> Whwn I try to run the above, I am getting
the below error.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Apache.Ignite.Core.Common.IgniteException
was unhandled
>>>>>>>>>>>>>   HResult=-2146233088
>>>>>>>>>>>>>   Message=Exception has been thrown by
the target of an
>>>>>>>>>>>>> invocation.
>>>>>>>>>>>>>   Source=Apache.Ignite.Core
>>>>>>>>>>>>>   StackTrace:
>>>>>>>>>>>>>        at
>>>>>>>>>>>>> Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.Error(Void*
target,
>>>>>>>>>>>>> Int32 errType, SByte* errClsChars, Int32
errClsCharsLen, SByte*
>>>>>>>>>>>>> errMsgChars, Int32 errMsgCharsLen, Void*
errData, Int32 errDataLen)
>>>>>>>>>>>>>        at
>>>>>>>>>>>>> Apache.Ignite.Core.Impl.Unmanaged.IgniteJniNativeMethods.IgnitionStart(Void*
>>>>>>>>>>>>> ctx, SByte* cfgPath, SByte* gridName,
Int32 factoryId, Int64 dataPtr)
>>>>>>>>>>>>>        at
>>>>>>>>>>>>> Apache.Ignite.Core.Impl.Unmanaged.UnmanagedUtils.IgnitionStart(UnmanagedContext
>>>>>>>>>>>>> ctx, String cfgPath, String gridName,
Boolean clientMode)
>>>>>>>>>>>>>        at
>>>>>>>>>>>>> Apache.Ignite.Core.Ignition.Start(IgniteConfiguration
cfg)
>>>>>>>>>>>>>        at MyIgniteConsole.Program.Main(String[]
args) in
>>>>>>>>>>>>> C:\Data\Professional\dotnet\workspace\MyIgnite\MyIgniteConsole\Program.cs:line
>>>>>>>>>>>>> 21
>>>>>>>>>>>>>        at System.AppDomain._nExecuteAssembly(RuntimeAssembly
>>>>>>>>>>>>> assembly, String[] args)
>>>>>>>>>>>>>        at System.AppDomain.ExecuteAssembly(String
>>>>>>>>>>>>> assemblyFile, Evidence assemblySecurity,
String[] args)
>>>>>>>>>>>>>        at
>>>>>>>>>>>>> Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
>>>>>>>>>>>>>        at
>>>>>>>>>>>>> System.Threading.ExecutionContext.RunInternal(ExecutionContext
>>>>>>>>>>>>> executionContext, ContextCallback callback,
Object state, Boolean
>>>>>>>>>>>>> preserveSyncCtx)
>>>>>>>>>>>>>        at
>>>>>>>>>>>>> System.Threading.ExecutionContext.Run(ExecutionContext
executionContext,
>>>>>>>>>>>>> ContextCallback callback, Object state,
Boolean preserveSyncCtx)
>>>>>>>>>>>>>        at
>>>>>>>>>>>>> System.Threading.ExecutionContext.Run(ExecutionContext
executionContext,
>>>>>>>>>>>>> ContextCallback callback, Object state)
>>>>>>>>>>>>>        at System.Threading.ThreadHelper.ThreadStart()
>>>>>>>>>>>>>   InnerException:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Any help would be appreciated.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>> Satya.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Mime
View raw message