Review Board 1.7.22


[HBase-4120] isolation and allocation,patch for table priority, test cases are added too.

Review Request #1421 - Created Aug. 9, 2011 and updated

Jia Liu
trunk
HBase-4120
Reviewers
hbase
hbase
Patch used for table priority alone,In this patch, not only tables can have different priorities but also the different actions like "get","scan","put" and "delete" can have priorities.
Tested with test cases in  TestCase_For_TablePriority_trunk_v1.patch 
please apply the patch of HBASE-4181 first,in some circumstances this bug will affect the performance of client.

Changes between revision 16 and 18

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

  1. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/Delete.java: Loading...
  2. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/Get.java: Loading...
  3. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/MultiPut.java: Loading...
  4. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/Mutation.java: Loading...
  5. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/Scan.java: Loading...
  6. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/PriorityFunction.java: Loading...
  7. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/PriorityJobQueue.java: Loading...
  8. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/allocation/test/TestActionPriority.java: Loading...
  9. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/allocation/test/TestPriorityJobQueue.java: Loading...
  10. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/allocation/test/TestTablePriority.java: Loading...
  11. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/ipc/TestActionPriority.java: Loading...
  12. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/ipc/TestPriorityJobQueue.java: Loading...
  13. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/ipc/TestTablePriority.java: Loading...
http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/Delete.java
Diff Revision 16 Diff Revision 18
1
/*
1
/*
2
 * Copyright 2010 The Apache Software Foundation
2
 * Copyright 2010 The Apache Software Foundation
3
 *
3
 *
4
 * Licensed to the Apache Software Foundation (ASF) under one
4
 * Licensed to the Apache Software Foundation (ASF) under one
5
 * or more contributor license agreements.  See the NOTICE file
5
 * or more contributor license agreements.  See the NOTICE file
6
 * distributed with this work for additional information
6
 * distributed with this work for additional information
7
 * regarding copyright ownership.  The ASF licenses this file
7
 * regarding copyright ownership.  The ASF licenses this file
8
 * to you under the Apache License, Version 2.0 (the
8
 * to you under the Apache License, Version 2.0 (the
9
 * "License"); you may not use this file except in compliance
9
 * "License"); you may not use this file except in compliance
10
 * with the License.  You may obtain a copy of the License at
10
 * with the License.  You may obtain a copy of the License at
11
 *
11
 *
12
 *     http://www.apache.org/licenses/LICENSE-2.0
12
 *     http://www.apache.org/licenses/LICENSE-2.0
13
 *
13
 *
14
 * Unless required by applicable law or agreed to in writing, software
14
 * Unless required by applicable law or agreed to in writing, software
15
 * distributed under the License is distributed on an "AS IS" BASIS,
15
 * distributed under the License is distributed on an "AS IS" BASIS,
16
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
 * See the License for the specific language governing permissions and
17
 * See the License for the specific language governing permissions and
18
 * limitations under the License.
18
 * limitations under the License.
19
 */
19
 */
20

    
   
20

   
21
package org.apache.hadoop.hbase.client;
21
package org.apache.hadoop.hbase.client;
22

    
   
22

   
23
import org.apache.hadoop.hbase.HConstants;
23
import org.apache.hadoop.hbase.HConstants;
24
import org.apache.hadoop.hbase.KeyValue;
24
import org.apache.hadoop.hbase.KeyValue;
25
import org.apache.hadoop.hbase.ipc.PriorityJobQueue.ActionPriorities;
25
import org.apache.hadoop.hbase.ipc.PriorityJobQueue.ActionPriorities;
26
import org.apache.hadoop.hbase.util.Bytes;
26
import org.apache.hadoop.hbase.util.Bytes;
27
import org.apache.hadoop.io.Writable;
27
import org.apache.hadoop.io.Writable;
28

    
   
28

   
29
import java.io.DataInput;
29
import java.io.DataInput;
30
import java.io.DataOutput;
30
import java.io.DataOutput;
31
import java.io.IOException;
31
import java.io.IOException;
32
import java.util.ArrayList;
32
import java.util.ArrayList;
33
import java.util.List;
33
import java.util.List;
34
import java.util.Map;
34
import java.util.Map;
35

    
   
35

   
36
/**
36
/**
37
 * Used to perform Delete operations on a single row.
37
 * Used to perform Delete operations on a single row.
38
 * <p>
38
 * <p>
39
 * To delete an entire row, instantiate a Delete object with the row
39
 * To delete an entire row, instantiate a Delete object with the row
40
 * to delete.  To further define the scope of what to delete, perform
40
 * to delete.  To further define the scope of what to delete, perform
41
 * additional methods as outlined below.
41
 * additional methods as outlined below.
42
 * <p>
42
 * <p>
43
 * To delete specific families, execute {@link #deleteFamily(byte[]) deleteFamily}
43
 * To delete specific families, execute {@link #deleteFamily(byte[]) deleteFamily}
44
 * for each family to delete.
44
 * for each family to delete.
45
 * <p>
45
 * <p>
46
 * To delete multiple versions of specific columns, execute
46
 * To delete multiple versions of specific columns, execute
47
 * {@link #deleteColumns(byte[], byte[]) deleteColumns}
47
 * {@link #deleteColumns(byte[], byte[]) deleteColumns}
48
 * for each column to delete.
48
 * for each column to delete.
49
 * <p>
49
 * <p>
50
 * To delete specific versions of specific columns, execute
50
 * To delete specific versions of specific columns, execute
51
 * {@link #deleteColumn(byte[], byte[], long) deleteColumn}
51
 * {@link #deleteColumn(byte[], byte[], long) deleteColumn}
52
 * for each column version to delete.
52
 * for each column version to delete.
53
 * <p>
53
 * <p>
54
 * Specifying timestamps, deleteFamily and deleteColumns will delete all
54
 * Specifying timestamps, deleteFamily and deleteColumns will delete all
55
 * versions with a timestamp less than or equal to that passed.  If no
55
 * versions with a timestamp less than or equal to that passed.  If no
56
 * timestamp is specified, an entry is added with a timestamp of 'now'
56
 * timestamp is specified, an entry is added with a timestamp of 'now'
57
 * where 'now' is the servers's System.currentTimeMillis().
57
 * where 'now' is the servers's System.currentTimeMillis().
58
 * Specifying a timestamp to the deleteColumn method will
58
 * Specifying a timestamp to the deleteColumn method will
59
 * delete versions only with a timestamp equal to that specified.
59
 * delete versions only with a timestamp equal to that specified.
60
 * If no timestamp is passed to deleteColumn, internally, it figures the
60
 * If no timestamp is passed to deleteColumn, internally, it figures the
61
 * most recent cell's timestamp and adds a delete at that timestamp; i.e.
61
 * most recent cell's timestamp and adds a delete at that timestamp; i.e.
62
 * it deletes the most recently added cell.
62
 * it deletes the most recently added cell.
63
 * <p>The timestamp passed to the constructor is used ONLY for delete of
63
 * <p>The timestamp passed to the constructor is used ONLY for delete of
64
 * rows.  For anything less -- a deleteColumn, deleteColumns or
64
 * rows.  For anything less -- a deleteColumn, deleteColumns or
65
 * deleteFamily -- then you need to use the method overrides that take a
65
 * deleteFamily -- then you need to use the method overrides that take a
66
 * timestamp.  The constructor timestamp is not referenced.
66
 * timestamp.  The constructor timestamp is not referenced.
67
 */
67
 */
68
public class Delete extends Mutation
68
public class Delete extends Mutation
69
  implements Writable, Row, Comparable<Row> {
69
  implements Writable, Row, Comparable<Row> {
70
  private static final byte DELETE_VERSION = (byte)3;
70
  private static final byte DELETE_VERSION = (byte)3;
71

    
   
71

   
72
  /** Constructor for Writable.  DO NOT USE */
72
  /** Constructor for Writable.  DO NOT USE */
73
  public Delete() {
73
  public Delete() {
74
    this((byte [])null);
74
    this((byte [])null);
75
  }
75
  }
76

    
   
76

   
77
  /**
77
  /**
78
   * Create a Delete operation for the specified row.
78
   * Create a Delete operation for the specified row.
79
   * <p>
79
   * <p>
80
   * If no further operations are done, this will delete everything
80
   * If no further operations are done, this will delete everything
81
   * associated with the specified row (all versions of all columns in all
81
   * associated with the specified row (all versions of all columns in all
82
   * families).
82
   * families).
83
   * @param row row key
83
   * @param row row key
84
   */
84
   */
85
  public Delete(byte [] row) {
85
  public Delete(byte [] row) {
86
    this(row, HConstants.LATEST_TIMESTAMP, null);
86
    this(row, HConstants.LATEST_TIMESTAMP, null);
87
  }
87
  }
88

    
   
88

   
89
  /**
89
  /**
90
   * Create a Delete operation for the specified row and timestamp, using
90
   * Create a Delete operation for the specified row and timestamp, using
91
   * an optional row lock.<p>
91
   * an optional row lock.<p>
92
   *
92
   *
93
   * If no further operations are done, this will delete all columns in all
93
   * If no further operations are done, this will delete all columns in all
94
   * families of the specified row with a timestamp less than or equal to the
94
   * families of the specified row with a timestamp less than or equal to the
95
   * specified timestamp.<p>
95
   * specified timestamp.<p>
96
   *
96
   *
97
   * This timestamp is ONLY used for a delete row operation.  If specifying
97
   * This timestamp is ONLY used for a delete row operation.  If specifying
98
   * families or columns, you must specify each timestamp individually.
98
   * families or columns, you must specify each timestamp individually.
99
   * @param row row key
99
   * @param row row key
100
   * @param timestamp maximum version timestamp (only for delete row)
100
   * @param timestamp maximum version timestamp (only for delete row)
101
   * @param rowLock previously acquired row lock, or null
101
   * @param rowLock previously acquired row lock, or null
102
   */
102
   */
103
  public Delete(byte [] row, long timestamp, RowLock rowLock) {
103
  public Delete(byte [] row, long timestamp, RowLock rowLock) {
104
    this.row = row;
104
    this.row = row;
105
    this.ts = timestamp;
105
    this.ts = timestamp;
106
    if (rowLock != null) {
106
    if (rowLock != null) {
107
    	this.lockId = rowLock.getLockId();
107
    	this.lockId = rowLock.getLockId();
108
    }
108
    }
109
  }
109
  }
110

    
   
110

   
111
  /**
111
  /**
112
   * @param d Delete to clone.
112
   * @param d Delete to clone.
113
   */
113
   */
114
  public Delete(final Delete d) {
114
  public Delete(final Delete d) {
115
    this.row = d.getRow();
115
    this.row = d.getRow();
116
    this.ts = d.getTimeStamp();
116
    this.ts = d.getTimeStamp();
117
    this.lockId = d.getLockId();
117
    this.lockId = d.getLockId();
118
    this.familyMap.putAll(d.getFamilyMap());
118
    this.familyMap.putAll(d.getFamilyMap());
119
    this.writeToWAL = d.writeToWAL;
119
    this.writeToWAL = d.writeToWAL;
120
  }
120
  }
121

    
   
121

   
122
  /**
122
  /**
123
   * Delete all versions of all columns of the specified family.
123
   * Delete all versions of all columns of the specified family.
124
   * <p>
124
   * <p>
125
   * Overrides previous calls to deleteColumn and deleteColumns for the
125
   * Overrides previous calls to deleteColumn and deleteColumns for the
126
   * specified family.
126
   * specified family.
127
   * @param family family name
127
   * @param family family name
128
   * @return this for invocation chaining
128
   * @return this for invocation chaining
129
   */
129
   */
130
  public Delete deleteFamily(byte [] family) {
130
  public Delete deleteFamily(byte [] family) {
131
    this.deleteFamily(family, HConstants.LATEST_TIMESTAMP);
131
    this.deleteFamily(family, HConstants.LATEST_TIMESTAMP);
132
    return this;
132
    return this;
133
  }
133
  }
134

    
   
134

   
135
  /**
135
  /**
136
   * Delete all columns of the specified family with a timestamp less than
136
   * Delete all columns of the specified family with a timestamp less than
137
   * or equal to the specified timestamp.
137
   * or equal to the specified timestamp.
138
   * <p>
138
   * <p>
139
   * Overrides previous calls to deleteColumn and deleteColumns for the
139
   * Overrides previous calls to deleteColumn and deleteColumns for the
140
   * specified family.
140
   * specified family.
141
   * @param family family name
141
   * @param family family name
142
   * @param timestamp maximum version timestamp
142
   * @param timestamp maximum version timestamp
143
   * @return this for invocation chaining
143
   * @return this for invocation chaining
144
   */
144
   */
145
  public Delete deleteFamily(byte [] family, long timestamp) {
145
  public Delete deleteFamily(byte [] family, long timestamp) {
146
    List<KeyValue> list = familyMap.get(family);
146
    List<KeyValue> list = familyMap.get(family);
147
    if(list == null) {
147
    if(list == null) {
148
      list = new ArrayList<KeyValue>();
148
      list = new ArrayList<KeyValue>();
149
    } else if(!list.isEmpty()) {
149
    } else if(!list.isEmpty()) {
150
      list.clear();
150
      list.clear();
151
    }
151
    }
152
    list.add(new KeyValue(row, family, null, timestamp, KeyValue.Type.DeleteFamily));
152
    list.add(new KeyValue(row, family, null, timestamp, KeyValue.Type.DeleteFamily));
153
    familyMap.put(family, list);
153
    familyMap.put(family, list);
154
    return this;
154
    return this;
155
  }
155
  }
156

    
   
156

   
157
  /**
157
  /**
158
   * Delete all versions of the specified column.
158
   * Delete all versions of the specified column.
159
   * @param family family name
159
   * @param family family name
160
   * @param qualifier column qualifier
160
   * @param qualifier column qualifier
161
   * @return this for invocation chaining
161
   * @return this for invocation chaining
162
   */
162
   */
163
  public Delete deleteColumns(byte [] family, byte [] qualifier) {
163
  public Delete deleteColumns(byte [] family, byte [] qualifier) {
164
    this.deleteColumns(family, qualifier, HConstants.LATEST_TIMESTAMP);
164
    this.deleteColumns(family, qualifier, HConstants.LATEST_TIMESTAMP);
165
    return this;
165
    return this;
166
  }
166
  }
167

    
   
167

   
168
  /**
168
  /**
169
   * Delete all versions of the specified column with a timestamp less than
169
   * Delete all versions of the specified column with a timestamp less than
170
   * or equal to the specified timestamp.
170
   * or equal to the specified timestamp.
171
   * @param family family name
171
   * @param family family name
172
   * @param qualifier column qualifier
172
   * @param qualifier column qualifier
173
   * @param timestamp maximum version timestamp
173
   * @param timestamp maximum version timestamp
174
   * @return this for invocation chaining
174
   * @return this for invocation chaining
175
   */
175
   */
176
  public Delete deleteColumns(byte [] family, byte [] qualifier, long timestamp) {
176
  public Delete deleteColumns(byte [] family, byte [] qualifier, long timestamp) {
177
    List<KeyValue> list = familyMap.get(family);
177
    List<KeyValue> list = familyMap.get(family);
178
    if (list == null) {
178
    if (list == null) {
179
      list = new ArrayList<KeyValue>();
179
      list = new ArrayList<KeyValue>();
180
    }
180
    }
181
    list.add(new KeyValue(this.row, family, qualifier, timestamp,
181
    list.add(new KeyValue(this.row, family, qualifier, timestamp,
182
      KeyValue.Type.DeleteColumn));
182
      KeyValue.Type.DeleteColumn));
183
    familyMap.put(family, list);
183
    familyMap.put(family, list);
184
    return this;
184
    return this;
185
  }
185
  }
186

    
   
186

   
187
  /**
187
  /**
188
   * Delete the latest version of the specified column.
188
   * Delete the latest version of the specified column.
189
   * This is an expensive call in that on the server-side, it first does a
189
   * This is an expensive call in that on the server-side, it first does a
190
   * get to find the latest versions timestamp.  Then it adds a delete using
190
   * get to find the latest versions timestamp.  Then it adds a delete using
191
   * the fetched cells timestamp.
191
   * the fetched cells timestamp.
192
   * @param family family name
192
   * @param family family name
193
   * @param qualifier column qualifier
193
   * @param qualifier column qualifier
194
   * @return this for invocation chaining
194
   * @return this for invocation chaining
195
   */
195
   */
196
  public Delete deleteColumn(byte [] family, byte [] qualifier) {
196
  public Delete deleteColumn(byte [] family, byte [] qualifier) {
197
    this.deleteColumn(family, qualifier, HConstants.LATEST_TIMESTAMP);
197
    this.deleteColumn(family, qualifier, HConstants.LATEST_TIMESTAMP);
198
    return this;
198
    return this;
199
  }
199
  }
200

    
   
200

   
201
  /**
201
  /**
202
   * Delete the specified version of the specified column.
202
   * Delete the specified version of the specified column.
203
   * @param family family name
203
   * @param family family name
204
   * @param qualifier column qualifier
204
   * @param qualifier column qualifier
205
   * @param timestamp version timestamp
205
   * @param timestamp version timestamp
206
   * @return this for invocation chaining
206
   * @return this for invocation chaining
207
   */
207
   */
208
  public Delete deleteColumn(byte [] family, byte [] qualifier, long timestamp) {
208
  public Delete deleteColumn(byte [] family, byte [] qualifier, long timestamp) {
209
    List<KeyValue> list = familyMap.get(family);
209
    List<KeyValue> list = familyMap.get(family);
210
    if(list == null) {
210
    if(list == null) {
211
      list = new ArrayList<KeyValue>();
211
      list = new ArrayList<KeyValue>();
212
    }
212
    }
213
    list.add(new KeyValue(
213
    list.add(new KeyValue(
214
        this.row, family, qualifier, timestamp, KeyValue.Type.Delete));
214
        this.row, family, qualifier, timestamp, KeyValue.Type.Delete));
215
    familyMap.put(family, list);
215
    familyMap.put(family, list);
216
    return this;
216
    return this;
217
  }
217
  }
218

    
   
218

   
219
  /**
219
  /**
220
   * Set the timestamp of the delete.
220
   * Set the timestamp of the delete.
221
   * 
221
   * 
222
   * @param timestamp
222
   * @param timestamp
223
   */
223
   */
224
  public void setTimestamp(long timestamp) {
224
  public void setTimestamp(long timestamp) {
225
    this.ts = timestamp;
225
    this.ts = timestamp;
226
  }
226
  }
227

    
   
227

   
228
  @Override
228
  @Override
229
  public Map<String, Object> toMap(int maxCols) {
229
  public Map<String, Object> toMap(int maxCols) {
230
    // we start with the fingerprint map and build on top of it.
230
    // we start with the fingerprint map and build on top of it.
231
    Map<String, Object> map = super.toMap(maxCols);
231
    Map<String, Object> map = super.toMap(maxCols);
232
    // why is put not doing this?
232
    // why is put not doing this?
233
    map.put("ts", this.ts);
233
    map.put("ts", this.ts);
234
    return map;
234
    return map;
235
  }
235
  }
236

    
   
236

   
237
  //Writable
237
  //Writable
238
  public void readFields(final DataInput in) throws IOException {
238
  public void readFields(final DataInput in) throws IOException {
239
    int version = in.readByte();
239
    int version = in.readByte();
240
    if (version > DELETE_VERSION) {
240
    if (version > DELETE_VERSION) {
241
      throw new IOException("version not supported");
241
      throw new IOException("version not supported");
242
    }
242
    }
243
    this.row = Bytes.readByteArray(in);
243
    this.row = Bytes.readByteArray(in);
244
    this.ts = in.readLong();
244
    this.ts = in.readLong();
245
    this.lockId = in.readLong();
245
    this.lockId = in.readLong();
246
    if (version > 2) {
246
    if (version > 2) {
247
      this.writeToWAL = in.readBoolean();
247
      this.writeToWAL = in.readBoolean();
248
    }
248
    }
249
    this.familyMap.clear();
249
    this.familyMap.clear();
250
    int numFamilies = in.readInt();
250
    int numFamilies = in.readInt();
251
    for(int i=0;i<numFamilies;i++) {
251
    for(int i=0;i<numFamilies;i++) {
252
      byte [] family = Bytes.readByteArray(in);
252
      byte [] family = Bytes.readByteArray(in);
253
      int numColumns = in.readInt();
253
      int numColumns = in.readInt();
254
      List<KeyValue> list = new ArrayList<KeyValue>(numColumns);
254
      List<KeyValue> list = new ArrayList<KeyValue>(numColumns);
255
      for(int j=0;j<numColumns;j++) {
255
      for(int j=0;j<numColumns;j++) {
256
    	KeyValue kv = new KeyValue();
256
    	KeyValue kv = new KeyValue();
257
    	kv.readFields(in);
257
    	kv.readFields(in);
258
    	list.add(kv);
258
    	list.add(kv);
259
      }
259
      }
260
      this.familyMap.put(family, list);
260
      this.familyMap.put(family, list);
261
    }
261
    }
262
    if (version > 1) {
262
    if (version > 1) {
263
      readAttributes(in);
263
      readAttributes(in);
264
    }
264
    }
265
  }
265
  }
266

    
   
266

   
267
  public void write(final DataOutput out) throws IOException {
267
  public void write(final DataOutput out) throws IOException {
268
    out.writeByte(DELETE_VERSION);
268
    out.writeByte(DELETE_VERSION);
269
    Bytes.writeByteArray(out, this.row);
269
    Bytes.writeByteArray(out, this.row);
270
    out.writeLong(this.ts);
270
    out.writeLong(this.ts);
271
    out.writeLong(this.lockId);
271
    out.writeLong(this.lockId);
272
    out.writeBoolean(this.writeToWAL);
272
    out.writeBoolean(this.writeToWAL);
273
    out.writeInt(familyMap.size());
273
    out.writeInt(familyMap.size());
274
    for(Map.Entry<byte [], List<KeyValue>> entry : familyMap.entrySet()) {
274
    for(Map.Entry<byte [], List<KeyValue>> entry : familyMap.entrySet()) {
275
      Bytes.writeByteArray(out, entry.getKey());
275
      Bytes.writeByteArray(out, entry.getKey());
276
      List<KeyValue> list = entry.getValue();
276
      List<KeyValue> list = entry.getValue();
277
      out.writeInt(list.size());
277
      out.writeInt(list.size());
278
      for(KeyValue kv : list) {
278
      for(KeyValue kv : list) {
279
        kv.write(out);
279
        kv.write(out);
280
      }
280
      }
281
    }
281
    }
282
    writeAttributes(out);
282
    writeAttributes(out);
283
  }
283
  }
284

    
   
284

   
285
  @Override
285
  @Override
286
  public int getPriority(ActionPriorities actionPriority) {
286
  public int getPriority(ActionPriorities actionPriority) {
287
	  return actionPriority.getDeletePlus();
287
	  return actionPriority.getDeletePriority();
288
  }
288
  }
289
}
289
}
http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/Get.java
Diff Revision 16 Diff Revision 18
 
http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/MultiPut.java
Diff Revision 16 Diff Revision 18
 
http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/Mutation.java
Diff Revision 16 Diff Revision 18
 
http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/Scan.java
Diff Revision 16 Diff Revision 18
 
http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/PriorityFunction.java
Diff Revision 16 Diff Revision 18
 
http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/PriorityJobQueue.java
Diff Revision 16 Diff Revision 18
 
http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/allocation/test/TestActionPriority.java
Diff Revision 16 Diff Revision 18 - File Reverted
 
http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/allocation/test/TestPriorityJobQueue.java
Diff Revision 16 Diff Revision 18 - File Reverted
 
http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/allocation/test/TestTablePriority.java
Diff Revision 16 Diff Revision 18 - File Reverted
 
http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/ipc/TestActionPriority.java
Diff Revision 16 Diff Revision 18
 
http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/ipc/TestPriorityJobQueue.java
Diff Revision 16 Diff Revision 18
 
http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/ipc/TestTablePriority.java
Diff Revision 16 Diff Revision 18
 
  1. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/Delete.java: Loading...
  2. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/Get.java: Loading...
  3. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/MultiPut.java: Loading...
  4. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/Mutation.java: Loading...
  5. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/Scan.java: Loading...
  6. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/PriorityFunction.java: Loading...
  7. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/PriorityJobQueue.java: Loading...
  8. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/allocation/test/TestActionPriority.java: Loading...
  9. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/allocation/test/TestPriorityJobQueue.java: Loading...
  10. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/allocation/test/TestTablePriority.java: Loading...
  11. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/ipc/TestActionPriority.java: Loading...
  12. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/ipc/TestPriorityJobQueue.java: Loading...
  13. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/ipc/TestTablePriority.java: Loading...