Properties: delete

Description

Deletes property records that match specified filters.

Deletion Process

Property records deleted with this method are not instantly removed from the disk.

Instead, records are masked with a DELETE marker timestamped when the delete operation is initiated. The DELETE marker masks all properties recorded with an earlier timestamp and thus are not visible to reading applications.

As a result, re-inserting property records with a timestamp earlier than the DELETE marker is not possible until the marker is removed.

In the example below, the records are deleted at time t=100. The DELETE marker hides all records with time earlier than 100. When new records are inserted with timestamps t=80 and t=150, only the second record is visible to clients.

When an entire entity is deleted, the DELETE marker has a Long.MAX_VALUE time and hides all properties for the given entity regardless of timestamp.

In the example below, the DELETE marker hides all records, including new records with timestamps t=80 and t=150.

The actual deletion from the disk, which removes both the DELETE markers as well as the masked records, occurs in the background as part of a scheduled HBase procedure called major compaction.

To identify pending DELETE markers for a given type and entity, run:

echo "scan 'atsd_properties', {'LIMIT' => 3, RAW => true, FILTER => \"PrefixFilter('\\"prop_type\\":\\"entity_name\\"')\"}" | /opt/atsd/hbase/bin/hbase shell

To remove all DELETE markers ahead of schedule, trigger a major compaction task on the atsd_properties table manually.

echo "major_compact 'atsd_properties'" | /opt/atsd/hbase/bin/hbase shell

Once the DELETE markers are deleted, new records can be created with any timestamps.

Request

Method Path Content-Type Header
POST /api/v1/properties/delete application/json

Parameters

None.

Fields

An array of objects containing fields for filtering records for deletion.

Field Type Description
type string [Required] Property type name.
This method does not support the removal of reserved $entity_tags.
entity string [Required] Entity name.
Set entity to wildcard * to delete records for all entities.
startDate string [Required] ISO formatted date or calendar keyword.
Delete records updated at or after the specified time.
endDate string [Required] ISO formatted date or calendar keyword.
Delete records updated before the specified time.
key object Object with name=value fields, for example {"file_system": "/"}.
Deletes records with exact or partial key fields based on the exactMatch parameter.
exactMatch boolean If exactMatch is true, only one record with exactly the same key as in the request is deleted.
If exactMatch is false, all records which contain fields in the request key are deleted.
If exactMatch is false and no key is specified, all records for the specified type and entity are deleted.
Default: true.
  • Key and tag names are case-insensitive.
  • Key and tag values are case-sensitive.

Response

Fields

Name Type Description
deleted number Number of deleted properties.

Errors

None.

Key Match Example

The following property records A,B,C, and D are present in the database.

| record | type   | entity | key-1 | key-2 |
|--------|--------|--------|-------|-------|
| A      | type-1 | e-1    | val-1 | val-2 |
| B      | type-1 | e-2    | val-1 |       |
| C      | type-1 | e-3    |       | VAL-3 |
| D      | type-1 | e-4    |       |       |

The table illustrates which records are deleted for the corresponding exactMatch and key parameters in the result column.

| exactMatch | key                     | result  |
|------------|-------------------------|---------|
| true       |                         | D       |
| false      |                         | A;B;C;D |
| true       | key-1=val-1             | B       |
| false      | key-1=val-1             | A;B     |
| true       | key-1=val-1;key-2=val-2 | A       |
| false      | key-1=val-1;key-2=val-2 | A       |
| false      | key-2=val-3             |         |
| false      | key-2=VAL-3             | C       |

Example

Request

URI

POST /api/v1/properties/delete

Payload

[{
    "type":"disk",
    "entity":"nurswgvml007",
    "key":{"file_system":"/","name":"sda1"}
},{
    "type":"disk",
    "entity":"nurswgvml006",
    "exactMatch": false
}]

curl

curl https://atsd_hostname:8443/api/v1/properties/delete \
  --insecure --include --user {username}:{password} \
  --header "Content-Type: application/json" \
  --data '[{ "type":"disk", "entity":"nurswgvml007", "key":{"file_system":"/","name":"sda1"} }]'