see on GitHub

Compare Exchange: How to Delete Compare Exchange Value


  • Use DeleteCompareExchangeValueOperation to delete a Key and its Value.

  • The Key and its Value are deleted only if the index in the request matches the current index stored in the server for the specified key.

  • For an overview of the 'Compare Exchange' feature click: Compare Exchange Overview

  • In this page:


Syntax

Method:

public DeleteCompareExchangeValueOperation(Class<T> clazz, String key, long index)

Parameters
key String The key to be deleted
index long The version number of the value to be deleted

Returned object:

public class CompareExchangeResult<T> {
    private T value;
    private long index;
    private boolean successful;

    public T getValue() {
        return value;
    }

    public void setValue(T value) {
        this.value = value;
    }

    public long getIndex() {
        return index;
    }

    public void setIndex(long index) {
        this.index = index;
    }

    public boolean isSuccessful() {
        return successful;
    }

    public void setSuccessful(boolean successful) {
        this.successful = successful;
    }
}

Return Value
Successful boolean * True if the delete operation was successfully completed
* True if key doesn't exist
* False if the delete operation failed
Value T * The value that was deleted upon a successful delete
* 'null' if key doesn't exist
* The currently existing value on the server if delete operation failed
Index long * The next available version number upon success
* The next available version number if key doesn't exist
* The currently existing index on the server if the delete operation failed

Example

// First, get existing value
CompareExchangeValue<User> readResult
    = store.operations().send(
        new GetCompareExchangeValueOperation<>(User.class, "AdminUser"));

// Delete the key - use the index received from the 'Get' operation
CompareExchangeResult<User> deleteResult
    = store.operations().send(
        new DeleteCompareExchangeValueOperation<>(User.class, "AdminUser", readResult.getIndex()));

// The delete result is successful only if the index has not changed between the read and delete operations
boolean deleteResultSuccessful = deleteResult.isSuccessful();