BizTalk Server Orchestration - Rules engine failure

This is Interesting: Free IT Magazines  
Home > Archive > BizTalk Server Orchestration > May 2006 > Rules engine failure





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author Rules engine failure
Jeremy Chapman

2006-05-16, 1:14 pm

Last night we had an issue where connection to our data center was lost.
Our biztalk databases are hosted on servers in the datacenter, so in this
case the biztalk servers were not able to access the databases. Typically
this doesn't pose too much of a problem except when it comes to the rules
engine. We have a biztalk solution which involves an orchestration calling
a rules engine. At some point during our datacenter outage, biztalk
suspended the orchestration (not resumable) because the rules engine could
not be called. Shouldn't biztalk do a certain number of retries rather than
just suspending the message outright? Second, why is it not resumable? Is
there any way of setting retry values and behavior?



Microsoft.RuleEngine.RuleStoreCompatibilityCheckException: Error checking
compatibility of database "BizTalkRuleEngineDb" on server "dc1serv53\QA".
Database is either not configured as a rule engine database, or you do not
have sufficient permissions to access the database. --->
System.Data.SqlClient.SqlException: General network error. Check your
network documentation.

--- End of inner exception stack trace ---


Server stack trace:
at Microsoft.RuleEngine.SqlRuleStore.TestConnection()

at Microsoft.RuleEngine.SqlRuleStore..ctor(String location)

at
Microsoft.BizTalk.RuleEngineExtensions.RuleSetDeploymentDriver.GetRuleStore()

at
Microsoft.RuleEngine.RemoteUpdateService.RemoteUpdateService.ValidateUser()

at
Microsoft.RuleEngine.RemoteUpdateService.RemoteUpdateService. RegisterPolicyAuthorizationUpdateCallbac
k(RemoteUpdateCallbackRepeater
proc)

at
System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(MethodBase
mb, Object[] args, Object server, Int32 methodPtr, Boolean
fExecuteInContext, Object[]& outArgs)

at
System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage
msg, Int32 methodPtr, Boolean fExecuteInContext)

Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage
reqMsg, IMessage retMsg)

at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&
msgData, Int32 type)

at
Microsoft.RuleEngine.IRuleEngineUpdateServiceInterface. RegisterPolicyAuthorizationUpdateCallbac
k(RemoteUpdateCallbackRepeater
proc)

at
Microsoft.RuleEngine.RemoteUpdateService.RemoteUpdateServiceProxy. RegisterPolicyAuthorizationUpdateCallbac
k(RemoteUpdateCallbackRepeater
proc)

at
System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(MethodBase
mb, Object[] args, Object server, Int32 methodPtr, Boolean
fExecuteInContext, Object[]& outArgs)

at
System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage
msg, Int32 methodPtr, Boolean fExecuteInContext)

Exception rethrown at [1]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage
reqMsg, IMessage retMsg)

at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&
msgData, Int32 type)

at
Microsoft.RuleEngine.RemoteUpdateService.RemoteUpdateServiceProxy. RegisterPolicyAuthorizationUpdateCallbac
k(RemoteUpdateCallbackRepeater
proc)

at Microsoft.RuleEngine.RuleEngineCache..ctor()

at Microsoft.RuleEngine.Policy..ctor(String policyName)

at
InteriorHealth.Orchestrations.PromisADT.RouteADT.segment3(StopConditions
stopOn)

at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s,
StopConditions stopCond, Exception& exp)
Microsoft.RuleEngine.RuleStoreCompatibilityCheckException
Scoped@
RouteADT.??__scope0
RouteADT.traCallRule
RouteADT.RouteADT
ADT_03.ADT_03
00000000-0000-0000-0000-000000000000


cduffy@ideacorporation.com

2006-05-16, 7:14 pm

Hi Jeremy,

I believe it was suspended (not resumable) because the call to the
RuleEngine did not have an exception handler. As far as I know
un-handled exceptions result in suspensions that are not resumable.

If the call to the RuleEngine is contained within a scope and the
transaction type is set to Long Running, an exception handler can be
added. In your case I think you would want to start by handling
'System.Data.SqlClient.SqlException' with a 'suspend' shape. Exceptions
of this type will result in a suspended resumable message when properly
handled.

Hope this helps
Chuck

Jeremy Chapman wrote:
> Last night we had an issue where connection to our data center was lost.
> Our biztalk databases are hosted on servers in the datacenter, so in this
> case the biztalk servers were not able to access the databases. Typically
> this doesn't pose too much of a problem except when it comes to the rules
> engine. We have a biztalk solution which involves an orchestration calling
> a rules engine. At some point during our datacenter outage, biztalk
> suspended the orchestration (not resumable) because the rules engine could
> not be called. Shouldn't biztalk do a certain number of retries rather than
> just suspending the message outright? Second, why is it not resumable? Is
> there any way of setting retry values and behavior?
>
>
>
> Microsoft.RuleEngine.RuleStoreCompatibilityCheckException: Error checking
> compatibility of database "BizTalkRuleEngineDb" on server "dc1serv53\QA".
> Database is either not configured as a rule engine database, or you do not
> have sufficient permissions to access the database. --->
> System.Data.SqlClient.SqlException: General network error. Check your
> network documentation.
>
> --- End of inner exception stack trace ---
>
>
> Server stack trace:
> at Microsoft.RuleEngine.SqlRuleStore.TestConnection()
>
> at Microsoft.RuleEngine.SqlRuleStore..ctor(String location)
>
> at
> Microsoft.BizTalk.RuleEngineExtensions.RuleSetDeploymentDriver.GetRuleStore()
>
> at
> Microsoft.RuleEngine.RemoteUpdateService.RemoteUpdateService.ValidateUser()
>
> at
> Microsoft.RuleEngine.RemoteUpdateService.RemoteUpdateService. RegisterPolicyAuthorizationUpdateCallbac
k(RemoteUpdateCallbackRepeater
> proc)
>
> at
> System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(MethodBase
> mb, Object[] args, Object server, Int32 methodPtr, Boolean
> fExecuteInContext, Object[]& outArgs)
>
> at
> System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage
> msg, Int32 methodPtr, Boolean fExecuteInContext)
>
> Exception rethrown at [0]:
> at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage
> reqMsg, IMessage retMsg)
>
> at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&
> msgData, Int32 type)
>
> at
> Microsoft.RuleEngine.IRuleEngineUpdateServiceInterface. RegisterPolicyAuthorizationUpdateCallbac
k(RemoteUpdateCallbackRepeater
> proc)
>
> at
> Microsoft.RuleEngine.RemoteUpdateService.RemoteUpdateServiceProxy. RegisterPolicyAuthorizationUpdateCallbac
k(RemoteUpdateCallbackRepeater
> proc)
>
> at
> System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(MethodBase
> mb, Object[] args, Object server, Int32 methodPtr, Boolean
> fExecuteInContext, Object[]& outArgs)
>
> at
> System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage
> msg, Int32 methodPtr, Boolean fExecuteInContext)
>
> Exception rethrown at [1]:
> at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage
> reqMsg, IMessage retMsg)
>
> at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&
> msgData, Int32 type)
>
> at
> Microsoft.RuleEngine.RemoteUpdateService.RemoteUpdateServiceProxy. RegisterPolicyAuthorizationUpdateCallbac
k(RemoteUpdateCallbackRepeater
> proc)
>
> at Microsoft.RuleEngine.RuleEngineCache..ctor()
>
> at Microsoft.RuleEngine.Policy..ctor(String policyName)
>
> at
> InteriorHealth.Orchestrations.PromisADT.RouteADT.segment3(StopConditions
> stopOn)
>
> at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s,
> StopConditions stopCond, Exception& exp)
> Microsoft.RuleEngine.RuleStoreCompatibilityCheckException
> Scoped@
> RouteADT.??__scope0
> RouteADT.traCallRule
> RouteADT.RouteADT
> ADT_03.ADT_03
> 00000000-0000-0000-0000-000000000000


cduffy@ideacorporation.com

2006-05-17, 1:17 am

Whoops - I think I posted an goofball response. Somethings telling me
calls to the rules engine have to be within an atomic scope, and that
eliminates an exception handler. Greater minds than mine will have to
provide an answer :-)

Chuck

Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com