ComponentDeletionFailed event

Highlight

Event Description How to recover Flow Related

ComponentDeletionFailed

• Emitted when deletion of a component from the component store/database fails after a valid remove request.

• Inspect component store availability and logs.
• Resolve storage issue (locks/connectivity) and retry the delete operation.

maybe

Operating Questions

Question Answer Comments

Could happen in production?

Yes

Is it fatal?

No

Logs

Log level Log message Also logs underlying exception? Occurs when…​

ERROR

Failed to delete component from the database

Yes

…​removing a component (via RemoveComponent command) which in turn attempts to delete the component from the ComponentStore for the given BulkId

ERROR

Error encountered deleting from the component store

Yes

…​terminating the bulk (via TerminateBulk command) which in turn attempts to delete all components from the ComponentStore for the given BulkId

Resolution Notes

This situation occurs on RemoveComponent and TerminateBulk commands.

The required values (bulkComponentId and bulkId) for resolution are supplied in the ComponentDeletionFailed system event as fields.

Remove Component

Note that after remediating the underlying issue, simply firing in a RemoveComponent command will not work (it will be stashed by the akka actor).

# Action Comments

1

Check system logs for underlying exception

Inspect the logged exception and explore the ComponentStore logs to determine the underlying issue.

The componentStore is backed by a database and the exception could have arisen from a number of issues. For example if the ComponentStore is underpinned by MongoDB, there could be a connection exception or a authentication exception (not exhaustive list)

2

Remediate the issue

This could also include an application restart depending on the underlying issue.

3

Manually remove the component from the ComponentStore

Call the ComponentStore (spring bean) deleteById method and pass in the ComponentId as an argument

4

Manually fire in a ComponentRemove command

(Note: this is not the same as a RemoveComponent command!)

The command should have the result of 'SUCCESS'.

This command will remove the component from the BulkBehaviourState (bulk actor) state.

Of course, you could create a system to do step 3 and 4 for you, however you would want to investigate and fix the underlying issue first (step 3 and 4).

Terminate Bulk

Note that after remediating the underlying issue, simply firing in a TerminateBulk command will not work (unsupported command for the actors given state).

# Action Comments

1

Check system logs for underlying exception

Same as 'Remove Component'

2

Remediate the issue

Same as 'Remove Component'.

3

Manually remove the components from the ComponentStore

Call the ComponentStore (spring bean) deleteAllByBulkId method and pass in the BulkId as an argument

4

Manually delete the state from the BulkStateStore

Call the BulkStateStore (spring bean) deleteByBulkId method and pass in the BulkId as an argument.

Note, this may have already been deleted in the original processing of the TerminateBulk command as it fired off a request to do this on a separate thread.

5

Trigger a BulkTerminatedNotification notification

Call the Send method on your BulkNotificationPort spring bean, supply a BulkTerminatedNotification as an argument

Once again, you could create a system to do step 3–5 for you, however, you would want to investigate and fix the underlying issue first (step 3 and 4).