How to clean up failed MPS transactions

Article ID: 1640 
Last Review: Oct,6 2008
Author:
Last updated by: system APPLIES TO:
  • Parallels Operations Automation

Symptoms

You can see the errors like the following in EventLog on MPS node:

Event Source: Provisioning Engine
Event Category: None
Event ID: 4108 or 4109
Date: X/XX/XXXX
Time: XX:XX:XX
User: N/A
Computer: XXXX
Description:
The provisioning engine failed while aborting the transaction picked by the background
thread for cleanup. Transaction ID = 'XXXXX', client transaction ID = '{bb}unknown{be}',
Transaction Log server = 'XXX-XXX' Database = 'MPFTranLogData'.
The transaction might be in an inconsistent state.
Check the transaction log database to determine the exact state of the transaction.
For more information, see Help and Support Center at
http://go.microsoft.com/fwlink/events.asp.

Cause

Following issues could be the reason of such errors:

- Some MPS Providers throw exception on transaction rollback
E.g. SetUserPassword procedure in standard Active Directory provider this is an issue of Microsoft's providers implementation, because by design of MPS Engine requires no-error policy in transaction rollback method.

- This may be a result of incorrect MPS Engine restart (dllhost.exe process killing).


The standard behaviour of MPS Engine is a removing failed transactions to the MPFAuditLog database, but sometimes it isn't happens. Possibly it is a Microsoft issue.

Resolution

1. Log on on to the Microsoft Provisioing System host (POAMPS01) using an account that is a member of the Domain Administators group.

2. Run Administrative Tools > Event Viewer.

3. Right-click Application and select View > Filter.

4. In Event Types box check Error and uncheck Information and Warning check boxes.

5. Select Provisioning Engine in Event Source combo box.

6. In Event ID type 4109. Click OK.

7. On the right pane double-click on every event and copy Transaction ID to textual file (comma separated list of failed transaction ids).

8. Repeat steps 2-6 but enter 4108 for Event ID field.

9. Run Microsoft SQL Server > SQL Query Analizer tool.

10. Select MPFTranLogData database in databases combo box.

11. Enter the following SQL script:

DELETE FROM Request WHERE TranIdx IN (<comma separated list of failed transaction ids>)
DELETE FROM TransIDs WHERE TranIdx IN (<comma separated list of failed transaction ids>)


12. Click Execute Query button.

Example:

DELETE FROM Request WHERE TranIdx in (32256, 34175, 34178)
DELETE FROM TransIDs WHERE TranIdx in (32256, 34175, 34178)


Important!
TransIDs table may exists under two owners: dbo and POADOMAIN\MPFServiceAcct. Execute query for table with POADOMAIN\MPFServiceAcct owner i.e.:


DELETE FROM "POADOMAIN\MPFServiceAcct".TransIDs WHERE TranIdx in (32256, 34175, 34178)
 
Keywords: mps failed transactions


Subscription for this article changesSubscription for this article changes

Please provide feedback on this article

Did this article help you solve your issue?
Yes
No
Partially
I do not know yet
 
Strongly Agree   Strongly Disagree
  9 8 7 6 5 4 3 2 1
The article is easy to understand
The article is accurate
Additional Comments:
*Please provide us with your email address in case we need to contact you.
* - required fields