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 \
-k --user {username}:{password} \
--header "Content-Type: application/json" \
--data '[{ "type":"disk", "entity":"nurswgvml007", "key":{"file_system":"/","name":"sda1"} }]'