[ 
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)

Reply via email to