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 Mon, 04 Apr 2016 12:26:00 GMT
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