[
https://issues.apache.org/jira/browse/HBASE-10001?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13827974#comment-13827974
]
Nicolas Liochon commented on HBASE-10001:
-----------------------------------------
I was thinking about something like this:
{noformat}
@@ -2024,7 +2024,7 @@ public class HRegion implements HeapSize { // , Writable{
WALEdit walEdit = new WALEdit(isInReplay);
MultiVersionConsistencyControl.WriteEntry w = null;
long txid = 0;
- boolean walSyncSuccessful = false;
+ boolean doRollBackMemstore = false;
boolean locked = false;
/** Keep track of the locks we hold so we can release them in finally
clause */
@@ -2185,6 +2185,7 @@ public class HRegion implements HeapSize { // , Writable{
!= OperationStatusCode.NOT_RUN) {
continue;
}
+ doRollBackMemstore = true; // If we have a failure, we need to clean
what we wrote
addedSize += applyFamilyMapToMemstore(familyMaps[i], w);
}
@@ -2244,7 +2245,7 @@ public class HRegion implements HeapSize { // , Writable{
if (walEdit.size() > 0) {
syncOrDefer(txid, durability);
}
- walSyncSuccessful = true;
+ doRollBackMemstore = false;
// calling the post CP hook for batch mutation
if (!isInReplay && coprocessorHost != null) {
MiniBatchOperationInProgress<Mutation> miniBatchOp =
@@ -2286,7 +2287,7 @@ public class HRegion implements HeapSize { // , Writable{
} finally {
// if the wal sync was unsuccessful, remove keys from memstore
- if (!walSyncSuccessful) {
+ if (doRollBackMemstore) {
rollbackMemstore(batchOp, familyMaps, firstIndex, lastIndexExclusive);
}
if (w != null) mvcc.completeMemstoreInsert(w);
{noformat}
What do you think?
In any case, since we agree that it should be on HRegion, let me create another
jira (as I need to commit the coprocessor for 0.94 here :-) )
> Add a coprocessor to help testing the performances without taking into
> account the i/o
> --------------------------------------------------------------------------------------
>
> Key: HBASE-10001
> URL: https://issues.apache.org/jira/browse/HBASE-10001
> Project: HBase
> Issue Type: Improvement
> Components: test
> Affects Versions: 0.98.0, 0.96.0, 0.94.13
> Reporter: Nicolas Liochon
> Assignee: Nicolas Liochon
> Priority: Minor
> Fix For: 0.98.0, 0.96.1, 0.94.15
>
> Attachments: 10001.v1.patch, 10001.v2.patch
>
>
> We have a mockup to test only the client. If we want to include the network,
> without beeing limited by the i/o, we don't have much tools.
> This coprocessor helps to test this.
> I put it in the main code as to make it usable without adding a jar...
> I don't think it's possible avoid the WAL writes in the coprocessors. It
> would be great to have it to simplify the test with any kind of client (i.e.
> w/o changing the durability).
--
This message was sent by Atlassian JIRA
(v6.1#6144)