THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
/** * Interface for table operations that can be batched. * * @param <K> The key type associated with the operation. * @param <V> The value type associated with the operation. * @param <U> The update type associated with the operation. */ public interface Operation<K, V, U> { /** * @return The key associated with the operation. */ K getKey(); /** * @return The value associated with the operation. */ V getValue(); /** * @return The update associated with the operation. */ U getUpdate(); /** * @return The extra arguments associated with the operation. */ Object[] getArgs(); } |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
/**
* Update operation.
*
* @param <K> The type of the key.
* @param <U> The type of the update
*/
public class UpdateOperation<K, V, U> implements Operation<K, V, U> {
final private K key;
final private U update;
final private Object[] args;
public UpdateOperation(K key, U update, Object ... args) {
Preconditions.checkNotNull(key);
Preconditions.checkNotNull(update);
Preconditions.checkNotNull(args);
this.key = key;
this.update = update;
this.args = args;
}
/**
* @return The key to be updated in the table.
*/
@Override
public K getKey() {
return key;
}
/**
* @return null.
*/
@Override
public V getValue() {
return null;
}
/**
* @return The Update to be applied to the table for the key.
*/
@Override
public U getUpdate() {
return update;
}
@Override
public Object[] getArgs() {
return args;
}
}
|
Retriable Table
AsyncRetriableTable currently uses Failsafe library for handling retries. Reads (get) and Writes (puts, deletes) each currently have a RetryPolicy and metrics associated. The metrics reported are retry count, success count, perm failure count and retry timer. We will reuse the Write RetryPolicy for updates as well and metrics reported would be the same as for writes.
References
[1] . Samza Table API: https://samza.apache.org/learn/documentation/1.0.0/api/table-api.html
...