[gelöst] RTC-Absturz bei "Zahlungsvorschlag erstellen"

18. März 2014 13:07

Nicht immer, aber immer wieder, bringt die Ausführung der Funktion "Zahlungsvorschlag erstellen" im Zahlungsausgangs Buch.-Blatt den RTC (NAV 2009 R2, Build 32480) zum Absturz.
Möglicherweise bringt ein Clientupdate auf mindestens Build 32539 die Lösung (dies teste ich im nächsten Schritt), aber vielleicht kann mir jemand helfen, die Ereignisanzeige zu deuten?

Folgendes wird auf dem Server hinterlegt:
Fehler Nr. 1
Service: MicrosoftDynamicsNavServer$Instanzname
User: Domäne\User
Type: System.ArgumentException
Message: Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.
StackTrace: bei Microsoft.Dynamics.Nav.Runtime.NavApplicationMethod.InvokeMethod(Object obj, String methodName, Object[] args)
Source: Microsoft.Dynamics.Nav.Ncl
----------------------------------
Type: System.Reflection.TargetInvocationException
Message: Ein Aufrufziel hat einen Ausnahmefehler verursacht.
StackTrace:
bei System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
bei System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
bei Microsoft.Dynamics.Nav.Runtime.NavApplicationMethod.InvokeMethod(Object obj, String methodName, Object[] args)
Source: mscorlib
----------------------------------
Type: System.ArgumentException
Message: Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.
StackTrace:
bei Microsoft.Dynamics.Nav.Service.NSClientCallback.SendCommittedDataToClient(CommittedDataRequest committedDataRequest)
bei Microsoft.Dynamics.Nav.Service.NSClientCallback.SendCommittedDataToClient(NavDataSet recDataSet, NavRecordState dataSetState)
bei Microsoft.Dynamics.Nav.Service.NsFormDataAccess.GetCommittedData(Object sender, EventArgs e)
bei Microsoft.Dynamics.Nav.Runtime.NavConnection.FireDataCommitted()
bei Microsoft.Dynamics.Nav.Runtime.NavConnection.Commit()
bei Microsoft.Dynamics.Nav.Runtime.ALDatabase.ALCommit()
bei Microsoft.Dynamics.Nav.BusinessApplication.Report393.OnPostReport()

bei Microsoft.Dynamics.Nav.Runtime.NavReport.FireReportTrigger(NavTrigger reportTriggerDelegate)
bei Microsoft.Dynamics.Nav.Runtime.NavReport.ExecuteReport(Boolean displayResult)
bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunReportInternal(NavRecord record, Boolean displayResult)
bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunReport(Nullable`1 requestWindow, Nullable`1 systemPrinter, Boolean runReportModal, NavRecord record, IList`1 reportTextualFilters)
bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunModal()
bei Microsoft.Dynamics.Nav.BusinessApplication.Page256.Control42_OnAction()
Source: Microsoft.Dynamics.Nav.Service
----------------------------------
Type: System.ArgumentException
Message: Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.
StackTrace:
bei System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
bei System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
bei Microsoft.Dynamics.Nav.Client.ServiceClientCallback.<>c__DisplayClassa.<OpenDialog>b__9()
bei Microsoft.Dynamics.Nav.Client.ServiceClientCallback.<>c__DisplayClass1.<RunClientRequest>b__0()
bei Microsoft.Dynamics.Nav.Client.ServerInvocationManager.WaitForServerResponse(IAsyncResult asyncResult, ThreadCallbackContext threadEventContext)
Source: mscorlib


Fehler 2
Service: MicrosoftDynamicsNavServer$Instanzname
User: Domäne\User
Type: System.ArgumentException
Message: Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.
StackTrace:
bei Microsoft.Dynamics.Nav.Runtime.NavApplicationMethod.InvokeMethod(Object obj, String methodName, Object[] args)
bei Microsoft.Dynamics.Nav.Service.NSField.ActionField(NavConnection con)
bei Microsoft.Dynamics.Nav.Service.NSField.Action(NavConnection connection)
bei Microsoft.Dynamics.Nav.Service.NSService.<>c__DisplayClass21.<ActionField>b__20(Connection connection)
bei Microsoft.Dynamics.Nav.Service.NSService.ExecuteOperation[T](String operationName, ServiceOperation`1 operation, Connection connection, Boolean revertLanguageChanges, WindowsIdentity impersonationIdentity)
Source: Microsoft.Dynamics.Nav.Ncl
----------------------------------
Type: System.Reflection.TargetInvocationException
Message: Ein Aufrufziel hat einen Ausnahmefehler verursacht.
StackTrace:
bei System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
bei System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
bei Microsoft.Dynamics.Nav.Runtime.NavApplicationMethod.InvokeMethod(Object obj, String methodName, Object[] args)
Source: mscorlib
----------------------------------
Type: System.ArgumentException
Message: Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.
StackTrace:
bei Microsoft.Dynamics.Nav.Service.NSClientCallback.SendCommittedDataToClient(CommittedDataRequest committedDataRequest)
bei Microsoft.Dynamics.Nav.Service.NSClientCallback.SendCommittedDataToClient(NavDataSet recDataSet, NavRecordState dataSetState)
bei Microsoft.Dynamics.Nav.Service.NsFormDataAccess.GetCommittedData(Object sender, EventArgs e)
bei Microsoft.Dynamics.Nav.Runtime.NavConnection.FireDataCommitted()
bei Microsoft.Dynamics.Nav.Runtime.NavConnection.Commit()
bei Microsoft.Dynamics.Nav.Runtime.ALDatabase.ALCommit()
bei Microsoft.Dynamics.Nav.BusinessApplication.Report393.OnPostReport()

bei Microsoft.Dynamics.Nav.Runtime.NavReport.FireReportTrigger(NavTrigger reportTriggerDelegate)
bei Microsoft.Dynamics.Nav.Runtime.NavReport.ExecuteReport(Boolean displayResult)
bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunReportInternal(NavRecord record, Boolean displayResult)
bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunReport(Nullable`1 requestWindow, Nullable`1 systemPrinter, Boolean runReportModal, NavRecord record, IList`1 reportTextualFilters)
bei Microsoft.Dynamics.Nav.Runtime.NavReport.RunModal()
bei Microsoft.Dynamics.Nav.BusinessApplication.Page256.Control42_OnAction()
Source: Microsoft.Dynamics.Nav.Service
----------------------------------
Type: System.ArgumentException
Message: Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.
StackTrace:
bei System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
bei System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
bei Microsoft.Dynamics.Nav.Client.ServiceClientCallback.<>c__DisplayClassa.<OpenDialog>b__9()
bei Microsoft.Dynamics.Nav.Client.ServiceClientCallback.<>c__DisplayClass1.<RunClientRequest>b__0()
bei Microsoft.Dynamics.Nav.Client.ServerInvocationManager.WaitForServerResponse(IAsyncResult asyncResult, ThreadCallbackContext threadEventContext)
Source: mscorlib


Es wird klipp und klar sagt, dass das Problem im COMMIT des Reports 393, Trigger OnPostReport liegt
Code:
COMMIT;  // <---- Problem hier
IF NOT VendorLedgEntryTemp.ISEMPTY THEN
  IF CONFIRM
(Text024) THEN // <---- oder doch hier?
    FORM.RUNMODAL(0,VendorLedgEntryTemp);

Kann jemand von euch herauslesen, was genau beim COMMIT schief läuft? SilverX vielleicht ...?
Oder sollte ich c__DisplayClassa.<OpenDialog>b__9() so lesen, dass die Anwendung CONFIRM ausführen möchte und dabei abstürzt?

PS: Das COMMIT selbst wird aber ausgeführt, das heißt, nach Clientneustart ist der Zahlungsvorschlag noch immer da.

Re: RTC-Absturz bei "Zahlungsvorschlag erstellen"

18. März 2014 14:37

Hallo,

das ist leider ein Phänomen von NAV, dass es Schlüsselfehler erst bei einem COMMIT meldet.

Um der Fehlerursache näher zu kommen, bleibt dir leider nichts anderes über, als weitere Commits einzufügen, und zu schauen nach welchem Commit der Fehler auftritt, oder den Code durch zu steppen.

Bist du sicher, das der Fehler am Build liegt, oder sind die Daten in deinem neuen Build auch andere?

Gruß, Fiddi

Re: RTC-Absturz bei "Zahlungsvorschlag erstellen"

18. März 2014 14:44

fiddi hat geschrieben:das ist leider ein Phänomen von NAV, dass es Schlüsselfehler erst bei einem COMMIT meldet.

Ach so, wir sprechen hier von einem doppelten INSERT, das irgendwo vor dem COMMIT stattgefunden haben soll??

Bist du sicher, das der Fehler am Build liegt, oder sind die Daten in deinem neuen Build auch andere?
Nein, überhaupt nicht sicher. Aber laut verlinkter KB-Beschreibung werden Fehler der Art System.ArgumentException behoben, insofern könnte ich Glück haben. Ich habe den neuen Build nicht einmal herunter geladen, geschweige denn getestet.

Re: RTC-Absturz bei "Zahlungsvorschlag erstellen"

18. März 2014 15:40

NAtalie hat geschrieben:Ach so, wir sprechen hier von einem doppelten INSERT, das irgendwo vor dem COMMIT stattgefunden haben soll??


Darauf deutet die Meldung zumindest hin: :wink:
Windows hat geschrieben:Message: Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.


Gruß, Fiddi

Re: RTC-Absturz bei "Zahlungsvorschlag erstellen"

18. März 2014 15:48

fiddi hat geschrieben:Darauf deutet die Meldung zumindest hin: :wink:
Windows hat geschrieben:Message: Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.

Naja, ich hatte die Meldung eher so verstanden, dass etwas doppelt auf dem Servercache o.ä. abgelegt wird; nicht auf NAV-Daten bezogen.

Aber danke für deine Hinweise, das bringt mich schon weiter - gelöst ist das Ganze damit zwar noch nicht, aber der erste Schritt ist getan.

Re: RTC-Absturz bei "Zahlungsvorschlag erstellen"

20. Juni 2014 08:40

Seit unserem technischen Update auf Build 36651 scheint der Fehler nicht mehr aufzutauchen.