com.azure.cosmos.implementation.changefeed.LeaseStoreManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of azure-cosmos Show documentation
Show all versions of azure-cosmos Show documentation
This Package contains Microsoft Azure Cosmos SDK (with Reactive Extension Reactor support) for Azure Cosmos DB SQL API
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.cosmos.implementation.changefeed;
import com.azure.cosmos.implementation.changefeed.implementation.LeaseStoreManagerImpl;
import com.azure.cosmos.CosmosAsyncContainer;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.time.Duration;
/**
* Defines an interface for operations with {@link Lease}.
*/
public interface LeaseStoreManager extends LeaseContainer, LeaseManager, LeaseStore, LeaseCheckpointer
{
/**
* Provides flexible way to buildAsyncClient lease manager constructor parameters.
* For the actual creation of lease manager instance, delegates to lease manager factory.
*/
interface LeaseStoreManagerBuilderDefinition {
LeaseStoreManagerBuilderDefinition leaseContextClient(ChangeFeedContextClient leaseContextClient);
LeaseStoreManagerBuilderDefinition leasePrefix(String leasePrefix);
LeaseStoreManagerBuilderDefinition leaseCollectionLink(CosmosAsyncContainer leaseCollectionLink);
LeaseStoreManagerBuilderDefinition requestOptionsFactory(RequestOptionsFactory requestOptionsFactory);
LeaseStoreManagerBuilderDefinition hostName(String hostName);
Mono build();
}
static LeaseStoreManagerBuilderDefinition builder() {
return new LeaseStoreManagerImpl();
}
/**
* @return List of all leases.
*/
Flux getAllLeases();
/**
* @return all leases owned by the current host.
*/
Flux getOwnedLeases();
/**
* Checks whether the lease exists and creates it if it does not exist.
*
* @param leaseToken the partition to work on.
* @param continuationToken the continuation token if it exists.
* @return the lease.
*/
Mono createLeaseIfNotExist(String leaseToken, String continuationToken);
/**
* DELETE the lease.
*
* @param lease the lease to remove.
* @return a representation of the deferred computation of this call.
*/
Mono delete(Lease lease);
/**
* Acquire ownership of the lease.
*
* @param lease the Lease to acquire.
* @return the updated acquired lease.
*/
Mono acquire(Lease lease);
/**
* Release ownership of the lease.
*
* @param lease the lease to acquire.
* @return a representation of the deferred computation of this call.
*/
Mono release(Lease lease);
/**
* Renew the lease. Leases are periodically renewed to prevent expiration.
*
* @param lease the Lease to renew.
* @return the updated renewed lease.
*/
Mono renew(Lease lease);
/**
* REPLACE item from the specified lease.
*
* @param leaseToUpdatePropertiesFrom the Lease containing new item.
* @return the updated lease.
*/
Mono updateProperties(Lease leaseToUpdatePropertiesFrom);
/**
* Checkpoint the lease.
*
* @param lease the Lease to renew.
* @param continuationToken the continuation token.
* @return the updated renewed lease.
*/
Mono checkpoint(Lease lease, String continuationToken);
/**
* @return true if the lease store is initialized.
*/
Mono isInitialized();
/**
* Mark the store as initialized.
*
* @return true if marked as initialized.
*/
Mono markInitialized();
/**
* Places a lock on the lease store for initialization. Only one process may own the store for the lock time.
*
* @param lockExpirationTime the time for the lock to expire.
* @return true if the lock was acquired, false otherwise.
*/
Mono acquireInitializationLock(Duration lockExpirationTime);
/**
* Releases the lock one the lease store for initialization.
*
* @return true if the lock was acquired and was relesed, false if the lock was not acquired.
*/
Mono releaseInitializationLock();
}