此PersistenceManager当前不是检查点

时间:2014-05-06 15:48:21

标签: devforce

我一直在

System.InvalidOperationException: This PersistenceManager is not currently checkpointing
   Stack Trace:
      at IdeaBlade.Persistence.PersistenceManager.RollbackCheckpoint(Int32 pCount)
      at Anubis.ViewModel.ReassignCases.ReassignCasesViewModel.Reassign_RunWorkerCompleted(Object sender, RunWorkerCompletedEventArgs e)
      at System.ComponentModel.BackgroundWorker.OnRunWorkerCompleted(RunWorkerCompletedEventArgs e)
      at System.ComponentModel.BackgroundWorker.AsyncOperationCompleted(Object arg)
      at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
      at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) 

IdeaBlade.Persistence.PersistenceManagerSaveException: Save failed - Query timeout expired
IdeaBlade.Persistence.PersistenceServerException: Query timeout expired
System.Data.OleDb.OleDbException: Query timeout expired
Stack Trace:
  at IdeaBlade.Persistence.PersistenceManager.DoSaveDataSet(IEnumerable pDataRows, SaveOptions pSaveOptions)
  at IdeaBlade.Persistence.PersistenceManager.SaveChanges(IEnumerable pDataRows, SaveOptions pSaveOptions)
  at Anubis.ViewModel.ReassignCases.ReassignCasesViewModel.Reassign_RunWorkerCompleted(Object sender, RunWorkerCompletedEventArgs e)
  at System.ComponentModel.BackgroundWorker.OnRunWorkerCompleted(RunWorkerCompletedEventArgs e)

  at System.ComponentModel.BackgroundWorker.AsyncOperationCompleted(Object arg)
  at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
  at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

使用IdeaBlade DevForce 3.6.2.2版本时。有没有办法解决这个或任何可能发生的事情的建议?

我得到的其他错误:

IdeaBlade.Persistence.PersistenceServerException: Login timeout expired     
An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.
Named Pipes Provider: Could not open a connection to SQL Server [5]. 
  System.Data.OleDb.OleDbException: Login timeout expired
An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.
Named Pipes Provider: Could not open a connection to SQL Server [5].
    Stack Trace:
    at IdeaBlade.Persistence.PersistenceManager.HandlePersistenceServerException(Exception pException, Boolean pTryToHandle, PersistenceOperation pOperation)
    at IdeaBlade.Persistence.PersistenceManager.XFetchDataSet(IEntityQuery pEntityQuery)
    at IdeaBlade.Persistence.PersistenceManager.XFetch(IEntityFinder pEntityFinder, WorkState pWorkState)
    at IdeaBlade.Persistence.PersistenceManager.XGetEntities(IEntityQuery pEntityQuery, QueryStrategy pQueryStrategy, WorkState pWorkState)
    at IdeaBlade.Persistence.PersistenceManager.GetEntities[T](IEntityQuery pEntityQuery, QueryStrategy pQueryStrategy)
    at IdeaBlade.Persistence.PersistenceManager.GetEntities[T](IEntityQuery pEntityQuery)
    at Anubis.MainWindow.RefreshData()
    at Anubis.MainWindow.Save(Boolean DisplaySaveResult, String& error)
    at Anubis.MainWindow.Autosave(Object sender, EventArgs e)
    at System.Windows.Threading.DispatcherTimer.FireTick(Object unused)
    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
    at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

IdeaBlade.Persistence.PersistenceServerException: Communication link failure
   TCP Provider: The semaphore timeout period has expired.
 System.Data.OleDb.OleDbException: Communication link failure
TCP Provider: The semaphore timeout period has expired.
Stack Trace:
  at IdeaBlade.Persistence.PersistenceManager.HandlePersistenceServerException(Exception pException, Boolean pTryToHandle, PersistenceOperation pOperation)
  at IdeaBlade.Persistence.PersistenceManager.XFetchDataSet(IEntityQuery pEntityQuery)
  at IdeaBlade.Persistence.PersistenceManager.XFetch(IEntityFinder pEntityFinder, WorkState pWorkState)
  at IdeaBlade.Persistence.PersistenceManager.XGetEntities(IEntityQuery pEntityQuery, QueryStrategy pQueryStrategy, WorkState pWorkState)
  at IdeaBlade.Persistence.PersistenceManager.GetEntities[T](IEntityQuery pEntityQuery, QueryStrategy pQueryStrategy)
  at Anubis.MainWindow.RunMessageRetrieval(Object sender, EventArgs e)
  at System.Windows.Threading.DispatcherTimer.FireTick(Object unused)
  at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
  at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

上述情况似乎非常频繁发生,导致我们的系统停滞不前。感谢您的输入社区

感谢 缺口

1 个答案:

答案 0 :(得分:0)

如果调用PM.RollbackCheckpoint并且PersistenceManager当前未检查点,则将抛出InvalidOperationException。您可以检查PM.IsCheckpointing标志,看看PM是否认为它是检查点。如果你认为它应该是,那么试着确定你的代码和PM不同步的原因:你回滚得太远了吗?你以前清理了检查站吗?以前保存过并没有启动新的检查点?意外地以非线程安全的方式使用PM?

保存期间的查询超时有点奇怪。 DevForce将在保存后进行重新获取,但如果没有堆栈跟踪,则不清楚问题是什么。如果您已实施IPersistenceServerSaving或IPersistenceServerSaved,请检查您是否在那里进行任何查询。