private void logCapacityChange() { if (logger.isTraceEnabled()) { StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); int index = 0; String fileName = PrimaryStorageCapacityUpdater.class.getSimpleName() + ".java"; for (int i = 0; i < stackTraceElements.length; i++) { if (fileName.equals(stackTraceElements[i].getFileName())) { index = i; } } StackTraceElement caller = stackTraceElements[index + 1]; logger.trace(String.format("[Primary Storage Capacity] %s:%s:%s changed the capacity of the primary storage[uuid:%s] as:\n" + "total: %s --> %s\n" + "available: %s --> %s\n" + "physical total: %s --> %s\n" + "physical available: %s --> %s\n", caller.getFileName(), caller.getMethodName(), caller.getLineNumber(), capacityVO.getUuid(), totalForLog, capacityVO.getTotalCapacity(), availForLog, capacityVO.getAvailableCapacity(), totalPhysicalForLog, capacityVO.getTotalPhysicalCapacity(), availPhysicalForLog, capacityVO.getAvailablePhysicalCapacity())); } }
@Override public PrimaryStorageCapacityVO call(PrimaryStorageCapacityVO cap) { if(total < avail || avail < 0) { N.New(PrimaryStorageCapacityVO.class, cap.getUuid()).error_("the total capacity of the fusionstor primary is wrong, uuid[%s]",cap.getUuid()); } cap.setTotalCapacity(total); cap.setAvailableCapacity(avail); cap.setTotalPhysicalCapacity(total); cap.setAvailablePhysicalCapacity(avail); return cap; } });
private void checkResize() { if (isResized()) { logger.debug(String.format("the physical capacity of primary storage[uuid:%s] changed from %s to %s," + " this indicates the primary storage is re-sized." + " We need to recalculate its capacity", capacityVO.getUuid(), originalCopy.getTotalPhysicalCapacity(), capacityVO.getTotalPhysicalCapacity())); // primary storage re-sized RecalculatePrimaryStorageCapacityMsg msg = new RecalculatePrimaryStorageCapacityMsg(); msg.setPrimaryStorageUuid(capacityVO.getUuid()); bus.makeLocalServiceId(msg, PrimaryStorageConstant.SERVICE_ID); bus.send(msg); } }
@Override public void entityLifeCycleEvent(EntityEvent evt, Object o) { PrimaryStorageCapacityVO c = (PrimaryStorageCapacityVO) o; PrimaryStorageCapacityVO pre = c.getShadow(); if (c.getAvailableCapacity() != pre.getAvailableCapacity()) { String info = String.format( "[PrimaryStorageCapacity:Change][uuid=%s]: %s --> %s (%s)", pre.getUuid(), pre.getAvailableCapacity(), c.getAvailableCapacity(), c.getAvailableCapacity() - pre.getAvailableCapacity()); logger.debug(info); loggerd.debug(info); printCallTrace(); } } });
@Transactional private boolean _increaseAvailableCapacity(long size) { if (!lockCapacity()) { logDeletedPrimaryStorage(); return false; } long n = capacityVO.getAvailableCapacity() + size; if (n > capacityVO.getTotalCapacity()) { throw new CloudRuntimeException(String.format("invalid primary storage[uuid:%s] capacity, available capacity[%s] > total capacity[%s]", capacityVO.getUuid(), n, capacityVO.getTotalCapacity())); } capacityVO.setAvailableCapacity(n); merge(); return true; }
@Transactional private boolean _reserve(long size, boolean exceptionOnFailure) { if (!lockCapacity()) { logDeletedPrimaryStorage(); return false; } if (capacityVO.getAvailableCapacity() < size) { if (exceptionOnFailure) { throw new OperationFailureException(operr("cannot reserve %s bytes on the primary storage[uuid:%s]," + " it's short of available capacity", size, capacityVO.getUuid())); } else { return false; } } capacityVO.setAvailableCapacity(capacityVO.getAvailableCapacity() - size); merge(); return true; }
"availablePhysicalCapacity: %s]", cap.getTotalCapacity(), cap.getAvailableCapacity(), cap.getTotalPhysicalCapacity(), cap.getAvailablePhysicalCapacity()); logger.info(String.format("decrease local primary storage[uuid: %s] capacity, changed capacity from %s to %s", cap.getUuid(), beforeCapacity, nowCapacity));
public static PrimaryStorageCapacityInventory valueOf(PrimaryStorageCapacityVO vo) { PrimaryStorageCapacityInventory inv = new PrimaryStorageCapacityInventory(); inv.setUuid(vo.getUuid()); inv.setTotalCapacity(vo.getTotalCapacity()); inv.setAvailableCapacity(vo.getAvailableCapacity()); inv.setCreateDate(vo.getCreateDate()); inv.setLastOpDate(vo.getLastOpDate()); inv.setTotalPhysicalCapacity(vo.getTotalPhysicalCapacity()); inv.setAvailablePhysicalCapacity(vo.getAvailablePhysicalCapacity()); inv.setSystemUsedCapacity(vo.getSystemUsedCapacity()); return inv; }