Important Update: Cohesity Products Knowledge Base Articles
All Cohesity Knowledge Base Articles are now managed via the Cohesity Support Portal: https://support.cohesity.com/. The Knowledge Base articles available here will not reflect the latest information or may no longer be accessible.
Problem
Clicking on the Review tab or attempting to create a new Export or Production in the Discovery Accelerator (DA) Client fails with constraint violation error.
The process to create a Discovery Accelerator (DA) export or production fails with a constraint violation error after upgrading from DA 10.0.2 to 10.0.4.The creation process stops when the New button is clicked to create a new export or Production and the constraint error pop-up is thrown. Clicking on the OK button in the error closes the error and ends the export creation process.
Clicking on the Review tab in the DA Client throws the same constraint error; however, clicking on the OK button in the error clears the error from the screen and proceeds to access the Review tab.
Error Message
Pop-up Error received in the DA Client:
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
User: ...
Customer: ...
Server: ...
Domain: Accelerator Client Domain
Stack:
Server stack trace:
at KVS.Accelerator.Case.Cases.GetCasesPrincipalForUser(CaseType aCaseType, String PrincipalName)
at KVS.Accelerator.Case.Cases.GetCasesPrincipalForUser(CaseType aCaseType)
at KVS.Accelerator.Web.BO.BO_User.get_CasePrincipals()
at KVS.Accelerator.Web.BO.BO_User.GetPrincipalsXml(Int32 CaseID)
at KVS.Accelerator.RBO.RBO_ExportProduction.GetExportProductionCreationData(Int32 CaseID)
at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, 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 KVS.Accelerator.Interfaces.IRBO_ExportProduction.GetExportProductionCreationData(Int32 CaseID)
at Accelerator.Client.MiddleTierAccess.ExportProductionService.CreationData(Int32 CaseID)
at Accelerator.Modules.ExportProductionModule.Views.CaseExportProductionSummaryPresenter.OnNew(Object sender, ExecutedRoutedEventArgs e)
Vault Event Log Entries:
Log Name: Veritas Enterprise Vault
Source: Accelerator Service Processor
Event ID: 100
Task Category: None
Level: Error
Keywords: Classic
Description:
APP AS - Customer ID: X - An error has occured when initializing the Cases. System.Data.ConstraintException: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
at System.Data.DataSet.FailedEnableConstraints()
at System.Data.DataSet.EnableConstraints()
at System.Data.DataSet.set_EnforceConstraints(Boolean value)
at System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at KVS.Accelerator.Case.Case.GetDS(Int32 CaseID, CaseType aCaseType, String StatusID, Boolean GetVaultStored, Boolean GetSecurity, String PrincipalLogin, Boolean GetEmailAddress, Boolean Gethistory, Boolean SearchableCase, Boolean CanbeADeletedCase)
V-437-100
Log Name: VeritasSymantec Enterprise Vault
Source: Accelerator Service Processor
Event ID: 104
Task Category: None
Level: Error
Keywords: Classic
Description:
APP AS - Customer ID: X - GetCasesPrincipalForUser. System.Data.ConstraintException: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
at KVS.Accelerator.Case.Case.GetDS(Int32 CaseID, CaseType aCaseType, String StatusID, Boolean GetVaultStored, Boolean GetSecurity, String PrincipalLogin, Boolean GetEmailAddress, Boolean Gethistory, Boolean SearchableCase, Boolean CanbeADeletedCase)
at KVS.Accelerator.Case.Case.GetDS(Int32 CaseID, CaseType aCaseType, String StatusID, Boolean GetVaultStored, Boolean GetSecurity, String PrincipalLogin, Boolean GetEmailAddress, Boolean Gethistory, Boolean SearchableCase)
at KVS.Accelerator.Case.Case.GetDS(Int32 CaseID, CaseType aCaseType, String StatusID, Boolean GetVaultStored, Boolean GetSecurity, String PrincipalLogin, Boolean GetEmailAddress)
at KVS.Accelerator.Case.Case.GetDS(Int32 CaseID, CaseType aCaseType, String StatusID, Boolean GetVaultStored, Boolean GetSecurity, String PrincipalLogin)
at KVS.Accelerator.Case.Cases.GetCasesPrincipalForUser(CaseType aCaseType, String PrincipalName)
V-437-100
Dtrace log entries of AcceleratorService process on the Accelerator Server:
(AcceleratorService) <7040> EV-H {-}
Exception: Error Case_Case_Initializing Info:{ACCELERATOREVENT.EN_US} {CX.EN_US} An error has occured when initializing the Cases. System.Data.ConstraintException:
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.|
at System.Data.DataSet.FailedEnableConstraints()|
at System.Data.DataSet.EnableConstraints()|
at System.Data.DataSet.set_EnforceConstraints(Boolean value)|
at System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)|
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)|
at System.Data.Common.DbDataAdapter.Fill (DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)|
at System.Data.Common.DbDataAdapter.Fill (DataTable dataTable)|
at KVS.Accelerator.Case.Case.GetDS(Int32 CaseID, CaseType aCaseType, String StatusID, Boolean GetVaultStored, Boolean GetSecurity, String PrincipalLogin, Boolean GetEmailAddress, Boolean Gethistory, Boolean SearchableCase, Boolean CanbeADeletedCase) Diag: Type:System.Exception ST: Inner:None
(AcceleratorService) <7040> EV-H {-}
Exception: Error Case_Cases_GetCasesPrincipalForUser Info:{ACCELERATOREVENT.EN_US} {CX.EN_US} GetCasesPrincipalForUser. System.Data.ConstraintException: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.|
at KVS.Accelerator.Case.Case.GetDS(Int32 CaseID, CaseType aCaseType, String StatusID, Boolean GetVaultStored, Boolean GetSecurity, String PrincipalLogin, Boolean GetEmailAddress, Boolean Gethistory, Boolean SearchableCase, Boolean CanbeADeletedCase)|
at KVS.Accelerator.Case.Case.GetDS(Int32 CaseID, CaseType aCaseType, String StatusID, Boolean GetVaultStored, Boolean GetSecurity, String PrincipalLogin, Boolean GetEmailAddress, Boolean Gethistory, Boolean SearchableCase)|
at KVS.Accelerator.Case.Case.GetDS(Int32 CaseID, CaseType aCaseType, String StatusID, Boolean GetVaultStored, Boolean GetSecurity, String PrincipalLogin, Boolean GetEmailAddress)|
at KVS.Accelerator.Case.Case.GetDS(Int32 CaseID, CaseType aCaseType, String StatusID, Boolean GetVaultStored, Boolean GetSecurity, String PrincipalLogin)|
at KVS.Accelerator.Case.Cases.GetCasesPrincipalForUser(CaseType aCaseType, String PrincipalName) Diag: Type:System.Exception ST: Inner:None
(AcceleratorService) <7040> EV-H {RBO_MARKING.EN_US} Exception: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints. Info: {CX.EN_US} RBO method failed Diag: Type:System.Data.ConstraintException ST:
at KVS.Accelerator.Case.Cases.GetCasesPrincipalForUser(CaseType aCaseType, String PrincipalName)|
at KVS.Accelerator.Case.Cases.GetCasesPrincipalForUser (CaseType aCaseType)|
at KVS.Accelerator.Web.BO.BO_User.get_CasePrincipals()|
at KVS.Accelerator.Web.BO.BO_User.GetCaseRoles(Int32 CaseID, Hashtable CurrentRoles)|
at KVS.Accelerator.Web.BO.BO_Marks.GetReviewerMarksFor(Int32 CaseID, TagType Type, Boolean IsLinkedFolder)|
at KVS.Accelerator.Web.BO.BO_Marks.GetReviewerMarksFor(Int32 CaseID, Boolean IsLinkedFolder)|
at KVS.Accelerator.RBO.RBO_Marking.GetReviewerMarkings(Int32 caseID, MarkingTypeEnum markingType) Inner:None
DA Client Trace Log entries:
[ACD] <4240> : ClientChannelSink.SyncProcessMessage - ClientChannelSink SyncProcessMessage !!ERROR!!: URI: tcp://...:8086/RBO_ExportProduction -- Method: GetExportProductionCreationData -- Error: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
[ACD] <4240> : AccPresenter.HandleException - HandlingInstanceID: cf0f5385-c823-48e7-8177-fce8147eeac2
"An exception of type Accelerator.Client.Common.HandledException occurred and was caught."
Message : Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.\r\n\r\nUser:\t\t...\...\r\nCustomer:\t2\r\nServer:\t\t...\r\nDomain:\t\tAccelerator Client Domain\r\nStack:\t\tAccPresenter.HandleException\r\n\r\nInner exception:\r\n
Server stack trace:
at KVS.Accelerator.Case.Cases.GetCasesPrincipalForUser(CaseType aCaseType, String PrincipalName)
at KVS.Accelerator.Case.Cases.GetCasesPrincipalForUser(CaseType aCaseType)
Cause
Discovery Accelerator (DA) has the ability to contain a parent - child relationship between a DA Case and one or more DA Research Folders. This relationship is tracked in a table named tblTree through the use of lft and rgt values assigned to each parent and child entry. When a DA Research Folder is created under a DA Case, the parent rgt value is increased to accommodate the lft and rgt values assigned to the child Research Folder.
A prematurely terminated DA Case deletion process can leave orphaned child Research Folder entries in the tblTree table. Data missing from the tblTree table for any closed or deleted case that has one or more open child case(s) (i.e., Research Folders) will cause invalid data to be returned during the permissions checking processing that occurs while accessing the Review tab or attempting to create new a export or Production.
To determine if this condition exists, run the following SQL query against the Discovery Accelerator customer database:
SELECT CaseID
, Name
, StatusID
, MarkedForDeletion
FROM tblCase
WHERE StatusID IN (20, 21, 23)
AND Type IN (101, 102)
AND CaseID NOT IN (SELECT ID FROM tblTree)
If any rows are returned by this query, the issue exists in the customer database.
Solution
The available solutions for this issue are:
- Create and use a new DA Customer and customer database, keeping the existing DA Customer and its customer database for historic reference.
- The tblTree table contents must be modified to include the appropriate row for any closed or deleted cases found to be causing the issue. Contact Veritas Enterprise Vault Technical Support for assistance with this operation.