Changeset 4657
- Timestamp:
- 2011-02-08 12:40:25 (2 years ago)
- Location:
- trunk/cr/repository/impl/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/cr/repository/impl/src/main/java/org/lilyproject/repository/impl/HBaseRepository.java
r4654 r4657 192 192 // The version numbering continues from where it has been deleted. 193 193 Get get = new Get(rowId); 194 get.addColumn(systemColumnFamily, RecordColumn.DELETED.bytes); 194 195 get.addColumn(systemColumnFamily, RecordColumn.VERSION.bytes); 195 196 Result result = recordTable.get(get); 196 197 if (!result.isEmpty()) { 198 // If the record existed it should have been deleted 199 byte[] recordDeleted = result.getValue(systemColumnFamily, RecordColumn.DELETED.bytes); 200 if (recordDeleted != null && !Bytes.toBoolean(recordDeleted)) { 201 throw new RecordExistsException(recordId); 202 } 197 203 byte[] oldVersion = result.getValue(systemColumnFamily, RecordColumn.VERSION.bytes); 198 204 if (oldVersion != null) { -
trunk/cr/repository/impl/src/main/java/org/lilyproject/repository/impl/lock/RowLocker.java
r4592 r4657 39 39 40 40 public RowLock lockRow(byte[] rowKey) throws IOException { 41 return lockRow(rowKey, null);42 }43 44 public RowLock lockRow(byte[] rowKey, org.apache.hadoop.hbase.client.RowLock hbaseRowLock) throws IOException {45 41 long now = System.currentTimeMillis(); 46 42 Get get = new Get(rowKey); … … 58 54 } 59 55 if ((previousTimestamp == -1) || (previousTimestamp + timeout < now)) { 60 Put put = new Put(rowKey , hbaseRowLock);56 Put put = new Put(rowKey); 61 57 RowLock rowLock = RowLock.createRowLock(rowKey); 62 58 put.add(family, qualifier, 1L, rowLock.getPermit()); -
trunk/cr/repository/impl/src/test/java/org/lilyproject/repository/impl/test/AbstractRepositoryTest.java
r4654 r4657 33 33 import org.junit.Before; 34 34 import org.junit.Test; 35 import org.lilyproject.repository.api.FieldNotFoundException; 36 import org.lilyproject.repository.api.FieldType; 37 import org.lilyproject.repository.api.IdGenerator; 38 import org.lilyproject.repository.api.IdRecord; 39 import org.lilyproject.repository.api.InvalidRecordException; 40 import org.lilyproject.repository.api.QName; 41 import org.lilyproject.repository.api.Record; 42 import org.lilyproject.repository.api.RecordId; 43 import org.lilyproject.repository.api.RecordNotFoundException; 44 import org.lilyproject.repository.api.RecordType; 45 import org.lilyproject.repository.api.RecordTypeNotFoundException; 46 import org.lilyproject.repository.api.Repository; 47 import org.lilyproject.repository.api.ResponseStatus; 48 import org.lilyproject.repository.api.Scope; 49 import org.lilyproject.repository.api.TypeManager; 50 import org.lilyproject.repository.api.VersionNotFoundException; 35 import org.lilyproject.repository.api.*; 51 36 import org.lilyproject.util.repo.VersionTag; 52 37 … … 183 168 184 169 assertEquals(createdRecord, repository.read(createdRecord.getId())); 170 control.verify(); 171 } 172 173 @Test 174 public void testCreateTwice() throws Exception { 175 IMocksControl control = createControl(); 176 control.replay(); 177 Record createdRecord = createDefaultRecord(); 178 179 Record record = repository.newRecord(createdRecord.getId()); 180 record.setRecordType(recordType1.getName(), recordType1.getVersion()); 181 record.setField(fieldType1.getName(), "value1"); 182 record.setField(fieldType2.getName(), 123); 183 record.setField(fieldType3.getName(), true); 184 try { 185 repository.create(record); 186 fail(); 187 } catch (RecordExistsException expected) { 188 } 189 185 190 control.verify(); 186 191 }
Note: See TracChangeset
for help on using the changeset viewer.