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 08:53:14 GMT
I have tested the attached solution. Everything works fine.
You just have to add BusinessUnit to the BinaryConfiguration:

var cfg = new IgniteConfiguration
{
    SpringConfigUrl = @"config\ignite.xml",
    JvmOptions = new List<string> {"-Xms512m", "-Xmx1024m"},
    BinaryConfiguration =
        new BinaryConfiguration
        {
            TypeConfigurations = new[] {new
BinaryTypeConfiguration(typeof (BusinessUnit))}
        }
};

Let me know if this works for you.

Pavel.


On Tue, Apr 5, 2016 at 10:30 AM, Pavel Tupitsyn <ptupitsyn@gridgain.com>
wrote:

> 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