[ https://issues.apache.org/jira/browse/ARTEMIS-3850?focusedWorklogId=779243&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-779243 ]
ASF GitHub Bot logged work on ARTEMIS-3850: ------------------------------------------- Author: ASF GitHub Bot Created on: 07/Jun/22 20:15 Start Date: 07/Jun/22 20:15 Worklog Time Spent: 10m Work Description: clebertsuconic commented on code in PR #4101: URL: https://github.com/apache/activemq-artemis/pull/4101#discussion_r891670677 ########## artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/Page.java: ########## @@ -543,77 +283,110 @@ public boolean delete(final PagedMessage[] messages) throws Exception { logger.debugf("Deleting pageNr=%d on store %s", pageId, storeName); } - final List<Long> largeMessageIds; - if (messages != null && messages.length > 0) { - largeMessageIds = new ArrayList<>(); - for (PagedMessage msg : messages) { - if ((msg.getMessage()).isLargeMessage()) { - // this will trigger large message delete: no need to do it - // for non-large messages! - msg.getMessage().usageDown(); - largeMessageIds.add(msg.getMessage().getMessageID()); + if (messages != null) { + try (LinkedListIterator<PagedMessage> iter = messages.iterator()) { + while (iter.hasNext()) { + PagedMessage msg = iter.next(); + if ((msg.getMessage()).isLargeMessage()) { + ((LargeServerMessage)(msg.getMessage())).deleteFile(); + msg.getMessage().usageDown(); + } } } - } else { - largeMessageIds = Collections.emptyList(); } - try { - if (!storageManager.waitOnOperations(5000)) { - ActiveMQServerLogger.LOGGER.timedOutWaitingForLargeMessagesDeletion(largeMessageIds); + storageManager.afterCompleteOperations(new IOCallback() { + @Override + public void done() { + try { + if (suspiciousRecords) { + ActiveMQServerLogger.LOGGER.pageInvalid(file.getFileName(), file.getFileName()); + file.renameTo(file.getFileName() + ".invalidPage"); + } else { + file.delete(); + } + referenceCounter.reset(); + } catch (Exception e) { + ActiveMQServerLogger.LOGGER.pageDeleteError(e); + } } - if (suspiciousRecords) { - ActiveMQServerLogger.LOGGER.pageInvalid(file.getFileName(), file.getFileName()); - file.renameTo(file.getFileName() + ".invalidPage"); - } else { - file.delete(); + + @Override + public void onError(int errorCode, String errorMessage) { + } + }); - return true; - } catch (Exception e) { - ActiveMQServerLogger.LOGGER.pageDeleteError(e); - return false; + return true; + } + + public int readNumberOfMessages() throws Exception { + boolean wasOpen = isOpen(); + + if (!wasOpen) { + if (!open(false)) { + return 0; + } + } + + try { + int numberOfMessages = PageReadWriter.readFromSequentialFile(this.storageManager, + this.storeName, + this.fileFactory, + this.file, + this.pageId, + null, + PageReadWriter.SKIP_ALL, + null, + null); + if (logger.isDebugEnabled()) { + logger.debug(">>> Reading numberOfMessages page " + this.pageId + ", returning " + numberOfMessages); + } + return numberOfMessages; + } finally { + if (!wasOpen) { + close(false); + } } } public int getNumberOfMessages() { - return numberOfMessages.intValue(); + return numberOfMessages; } public int getSize() { - return size.intValue(); + return size; } - @Override - public String toString() { - return "Page::pageNr=" + this.pageId + ", file=" + this.file; + private void setSize(int size) { + this.size = size; } @Override - public int compareTo(Page otherPage) { - return otherPage.getPageId() - this.pageId; + public String toString() { + return "Page::seqCreation=" + seqInt + ", pageNr=" + this.pageId + ", file=" + this.file; } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + pageId; - return result; + public int compareTo(Page o) { + return 0; Review Comment: it is not needed any longer.. I will remove it.. thank you Issue Time Tracking ------------------- Worklog Id: (was: 779243) Time Spent: 2h (was: 1h 50m) > Add Option to read messages into paging based on sizing and eliminate caching > ----------------------------------------------------------------------------- > > Key: ARTEMIS-3850 > URL: https://issues.apache.org/jira/browse/ARTEMIS-3850 > Project: ActiveMQ Artemis > Issue Type: New Feature > Affects Versions: 2.22.0 > Reporter: Clebert Suconic > Assignee: Clebert Suconic > Priority: Major > Fix For: 2.24.0 > > Time Spent: 2h > Remaining Estimate: 0h > -- This message was sent by Atlassian Jira (v8.20.7#820007)