|
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
|
|
|
|
|