A WAL Provider that returns a single thread safe WAL that optionally can skip parts of our
normal interactions with HDFS.
This implementation picks a directory in HDFS based on the same mechanisms as the
DefaultWALProvider
. Users can configure how much interaction
we have with HDFS with the configuration property "hbase.wal.iotestprovider.operations".
The value should be a comma separated list of allowed operations:
- append : edits will be written to the underlying filesystem
- sync : wal syncs will result in hflush calls
- fileroll : roll requests will result in creating a new file on the underlying
filesystem.
Additionally, the special cases "all" and "none" are recognized.
If ommited, the value defaults to "all."
Behavior is undefined if "all" or "none" are paired with additional values. Behavior is also
undefined if values not listed above are included.
Only those operations listed will occur between the returned WAL and HDFS. All others
will be no-ops.
Note that in the case of allowing "append" operations but not allowing "fileroll", the returned
WAL will just keep writing to the same file. This won't avoid all costs associated with file
management over time, becaue the data set size may result in additional HDFS block allocations.