private void returnBackupStorageCapacity(final String bsUuid, final long size) { ReturnBackupStorageMsg msg = new ReturnBackupStorageMsg(); msg.setBackupStorageUuid(bsUuid); msg.setSize(size); bus.makeTargetServiceIdByResourceUuid(msg, BackupStorageConstant.SERVICE_ID, bsUuid); bus.send( msg, new CloudBusCallBack() { @Override public void run(MessageReply reply) { if (!reply.isSuccess()) { // TODO logger.warn( String.format( "failed to return capacity[%s] to the backup storage[uuid:%s]", size, bsUuid)); } } }); }
@Transactional private void handle(ReturnBackupStorageMsg msg) { self = dbf.getEntityManager() .find(BackupStorageVO.class, self.getUuid(), LockModeType.PESSIMISTIC_WRITE); long availSize = self.getAvailableCapacity() + msg.getSize(); if (availSize > self.getTotalCapacity()) { availSize = self.getTotalCapacity(); } self.setAvailableCapacity(availSize); dbf.getEntityManager().merge(self); bus.reply(msg, new ReturnBackupStorageReply()); }