Package org.xmlBlaster.engine.queuemsg

Examples of org.xmlBlaster.engine.queuemsg.MsgQueueHistoryEntry


         log.fine("Testing" + msgQosData.toXml());

         org.xmlBlaster.engine.ServerScope global = new org.xmlBlaster.engine.ServerScope();
         MsgUnitWrapper msgWrapper = new MsgUnitWrapper(glob, msgUnit, queue.getStorageId());
         MsgQueueHistoryEntry entry = new MsgQueueHistoryEntry(global, msgWrapper, queue.getStorageId());

         queue.put(entry, false);
         I_QueueEntry returnEntry = queue.peek();

         boolean isHistory = (returnEntry instanceof MsgQueueHistoryEntry);
         assertTrue("historyEntry: the return value is not an update ", isHistory);
        
         MsgQueueHistoryEntry historyEntry = (MsgQueueHistoryEntry)returnEntry;

         assertEquals("The priority of the entry is different ", entry.getPriority(), historyEntry.getPriority());
         assertEquals("The persistent of the entry is different ", entry.isPersistent(), historyEntry.isPersistent());
         // The history queue is s LIFO, we have inverted the unique key
         assertEquals("The uniqueId of the entry is different ", entry.getUniqueId(), historyEntry.getUniqueId());
         assertEquals("The msgUnitWrapperUniqueId of the entry is different ", entry.getMsgUnitWrapperUniqueId(), historyEntry.getMsgUnitWrapperUniqueId());
         assertEquals("The topic oid of the entry is different ", entry.getKeyOid(), historyEntry.getKeyOid());
         assertEquals("The topic oid of the entry is different ", entry.getStorageId().getId(), historyEntry.getStorageId().getId());
         log.info("Persistent fields are read as expected");

         MsgUnit retMsgUnit = null;
         try {
            retMsgUnit = historyEntry.getMsgUnit();
         }
         catch (Throwable e) {  // Should not happen for RAM queue
            log.severe("Lookup failed, probably engine.Global has no Requestbroker, wi ignore the problem: " + e.getMessage());
            e.printStackTrace();
            return;
         }
         MsgQosData retMsgQosData = historyEntry.getMsgQosData();

         log.fine("Received" + retMsgQosData.toXml());

         // check message unit:
         assertEquals("The key of the message unit is different ", key.getOid(), retMsgUnit.getKeyData().getOid());
View Full Code Here


                      * relating, sn)); }
                      */
                     XBStore xbStore = getXBStore(dbAccessorServerThree, serverScopeThree, refEntry.getStorageId());
                     dbAccessorServerThree.addEntry(xbStore, refEntry);
                  } else if (relating.equals(Constants.RELATING_HISTORY)) {
                     MsgQueueHistoryEntry entry = (MsgQueueHistoryEntry) ent;
                     entry.getStorageId().getXBStore().setPostfix(entry.getKeyOid());
                     if (!entry.getStorageId().getPostfix1().startsWith(relating + "_" + clusterNodeIdToTransfer)) {
                        logToFile(relating + ": Ignoring wrong cluster node "
                              + entry.getStorageId().getPostfix1()
                              + ": " + entry.getStorageId().getId());
                        return null;
                     }
                     XBStore xbStore = getXBStore(dbAccessorServerThree, serverScopeThree, entry.getStorageId());
                     dbAccessorServerThree.addEntry(xbStore, entry);
                  } else if (ent instanceof ReferenceEntry) {
                     ReferenceEntry refEntry = (ReferenceEntry) ent;
                     XBStore xbStore = getXBStore(dbAccessorServerThree, serverScopeThree, refEntry.getStorageId());
                     dbAccessorServerThree.addEntry(xbStore, refEntry);
                  } else {
                     I_MapEntry entry = (I_MapEntry) ent;
                     if (relating.equals(Constants.RELATING_MSGUNITSTORE)) {
                        if (!entry.getStorageId().getPostfix1().startsWith(
                              relating + "_" + clusterNodeIdToTransfer)) {
                           logToFile(relating + ": Ignoring wrong cluster node "
                                 + entry.getStorageId().getPostfix1()
                                 + ": " + entry.getStorageId().getId());
                           return null;
                        }
                        MsgUnitWrapper msgUnitWrapper = (MsgUnitWrapper) entry;
                        entry.getStorageId().getXBStore().setPostfix(msgUnitWrapper.getKeyOid());
                     } else if (relating.equals(Constants.RELATING_SESSION)
                           || relating.equals(Constants.RELATING_SUBSCRIBE)) {
                        // "subPersistence,1_0" to "subPersistence,1.0"
                        // "topicStore_heron"
                        if (!entry.getStorageId().getPostfix1().startsWith(
                              relating + "_" + clusterNodeIdToTransfer)) {
                           logToFile(relating + ": Ignoring wrong cluster node "
                                 + entry.getStorageId().getPostfix1()
                                 + ": " + entry.getStorageId().getId());
                           return null;
                        }
                        entry.getStorageId().getXBStore().setPostfix(
                              ReplaceVariable.replaceAll(entry.getStorageId().getXBStore().getPostfix(), "1_0", "1.0"));
                     }
                     //else if (relating.equals(Constants.RELATING_TOPICSTORE)) {
                     //   TopicEntry topicEntry = (TopicEntry)entry;
                     // logToFile(queueNamePattern + " [processed=" + counter +
                     // "] processing topicStore " + entry.getLogId());
                     //}
                     XBStore xbStore = getXBStore(dbAccessorServerThree, serverScopeThree, entry.getStorageId());
                     dbAccessorServerThree.addEntry(xbStore, entry);
                  }
                  processed++;
                  if ((processed % 1000) == 0)
                     logToFile(queueNamePattern + " [processed=" + processed + "] processing ...");
View Full Code Here

            ArrayList subInfoList = new ArrayList();
            for (int i=0; i < subInfoArr.length; i++) subInfoList.add(subInfoArr[i]);
           
            for (int i=0; i < lst.size(); i++) {
               if (!this.isReady) return;
               MsgQueueHistoryEntry entry = (MsgQueueHistoryEntry)lst.get(i);
               MsgUnitWrapper msgUnitWrapper = (entry).getMsgUnitWrapper();
               if (msgUnitWrapper != null) {
                  if (!this.distributeOneEntry(msgUnitWrapper, entry, subInfoList)) {
                     this.isReady = false;
                     this.isRunning = false;
View Full Code Here

            // A historyQueue.take() could trigger entry.remove() -> topicHandler.entryDestroyed() -> toUnreferenced() ==> The topic would be invalid for the current publish
            this.isHistoryHandling = true;

            if (addToHistoryQueue && msgUnitWrapper.hasRemainingLife()) { // no sense to remember
               if (msgQosData.isForceUpdate() == false && hasHistoryEntries()) {
                  MsgQueueHistoryEntry entry = (MsgQueueHistoryEntry)this.historyQueue.peek();
                  if (entry != null) {
                     MsgUnitWrapper old = entry.getMsgUnitWrapper();
                     if (old != null) {
                        changed = !old.getMsgUnit().sameContent(msgUnit.getContent());
                     }
                  }
               }

               try { // Cleanup if persistent queue was temporary unavailable
                  long numHist = getNumOfHistoryEntries();
                  if (numHist > 1L && numHist > this.historyQueue.getMaxNumOfEntries()) {
                     long count = numHist-this.historyQueue.getMaxNumOfEntries();
                     // TODO: Implement count>1 in takeLowest():
                     List<I_Entry> entryList = this.historyQueue.takeLowest((int) count, -1L, null, false);
                     if (entryList.size() != count) {
                        log.severe(ME+": Can't remove expected entry, entryList.size()=" + entryList.size() + ": " + this.historyQueue.toXml(""));
                     }
                  }
               }
               catch (XmlBlasterException e) {
                  log.severe(ME+": History queue take() problem: " + e.getMessage());
               }

               try { // increments reference counter += 1
                  this.historyQueue.put(new MsgQueueHistoryEntry(serverScope, msgUnitWrapper, this.historyQueue.getStorageId()), I_Queue.USE_PUT_INTERCEPTOR);
               }
               catch (XmlBlasterException e) {
                  log.severe(ME+": History queue put() problem: " + e.getMessage());
               }

               try {
                  long numHist = getNumOfHistoryEntries();
                  if (numHist > 1L && numHist > this.historyQueue.getMaxNumOfEntries()) {
                     List<I_Entry> entryList = this.historyQueue.takeLowest(1, -1L, null, false);
                     if (entryList.size() != 1) {
                        throw new XmlBlasterException(serverScope, ErrorCode.INTERNAL_UNKNOWN, ME,
                              "Can't remove expected entry, entryList.size()=" + entryList.size() + ": " + this.historyQueue.toXml(""));
                     }
                     MsgQueueHistoryEntry entry = (MsgQueueHistoryEntry)entryList.get(0);
                     if (log.isLoggable(Level.FINE)) { if (!entry.isInternal()) log.fine(ME+": Removed oldest entry in history queue."); }
                  }
               }
               catch (XmlBlasterException e) {
                  log.severe(ME+": History queue take() problem: " + e.getMessage());
               }
View Full Code Here

      if (log.isLoggable(Level.FINE)) log.fine(ME+": getMsgUnitWrapperArr("+num+","+newestFirst+"), found " + historyList.size() + " historyList entries");
      ArrayList aliveMsgUnitWrapperList = new ArrayList();
      ArrayList historyDestroyList = null;
      int n = historyList.size();
      for(int i=0; i<n; i++) {
         MsgQueueHistoryEntry entry = (MsgQueueHistoryEntry)historyList.get(i);
         if (entry != null) {
            MsgUnitWrapper wr = entry.getMsgUnitWrapper();
            if (wr != null) {
               if (wr.hasRemainingLife()) {
                  aliveMsgUnitWrapperList.add(wr);
               }
               else {
                  if (historyDestroyList == null) historyDestroyList = new ArrayList();
                  historyDestroyList.add(entry);
               }
            }
            else {
               if (entry.isExpired()) {
                  if (log.isLoggable(Level.FINE)) log.fine(ME+": getMsgUnitWrapperArr(): MsgUnitWrapper weak reference from history queue is null, it is expired: " + entry.toXml());
               }
               else {
                  log.severe(ME+": getMsgUnitWrapperArr(): MsgUnitWrapper weak reference from history queue is null, this could be a serious bug, please report it to xmlBlaster@xmlBlaster.org mailing list: " +
                     entry.toXml() + "\n" + // toXml() not possible as it call recursive getMsgUnitWrapperArr());
                     ((this.msgUnitCache != null) ? this.msgUnitCache.toXml("") + "\n" : "") +
                     ((this.historyQueue != null) ? this.historyQueue.toXml("") : "")
                     );
                  Thread.dumpStack();
               }
View Full Code Here

         org.xmlBlaster.engine.ServerScope global = new org.xmlBlaster.engine.ServerScope();
         MsgUnitWrapper msgWrapper = new MsgUnitWrapper(glob, msgUnit, storageId);

         int step = 1000;
         int numCreate = 1000000;
         MsgQueueHistoryEntry entryArr[] = new MsgQueueHistoryEntry[numCreate];
         for(int i=0; i<numCreate; i++) {
            entryArr[i] = new MsgQueueHistoryEntry(global, msgWrapper, storageId);
            MsgUnitWrapper w = entryArr[i].getMsgUnitWrapper();
            if ((i % step) == 0) {
               log.info("Overall created #" + i + ": Created " + step + " new MsgQueueHistoryEntry instances, hit a key to create more ...");
               try { System.in.read(); } catch(java.io.IOException e) {}
            }
View Full Code Here

TOP

Related Classes of org.xmlBlaster.engine.queuemsg.MsgQueueHistoryEntry

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.