QPID-8394: [Broker-J][WMC] Fix message table
diff --git a/broker-plugins/management-http/src/main/java/resources/js/qpid/management/MessageStore.js b/broker-plugins/management-http/src/main/java/resources/js/qpid/management/MessageStore.js
index 166ac15..fbb9860 100644
--- a/broker-plugins/management-http/src/main/java/resources/js/qpid/management/MessageStore.js
+++ b/broker-plugins/management-http/src/main/java/resources/js/qpid/management/MessageStore.js
@@ -56,7 +56,7 @@
             }
             if (kwArgs && kwArgs.hasOwnProperty("end"))
             {
-                query.last = kwArgs.end;
+                query.last = kwArgs.end - 1;
             }
             var headers = lang.mixin({Accept: "application/javascript, application/json"}, kwArgs.headers);
             var messages = this.management.invoke(modelObj, query, {headers: headers}, true);
diff --git a/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/StoreUpdater.js b/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/StoreUpdater.js
index c313dcb..33a09af 100644
--- a/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/StoreUpdater.js
+++ b/broker-plugins/management-http/src/main/java/resources/js/qpid/management/query/StoreUpdater.js
@@ -60,16 +60,26 @@
                 _currentResultsIdToIndexMap: null,
                 _updating: false,
                 _fetchRangeCapturedArguments: null,
+                _inProgressfetchRange: null,
+                _inProgressfetch: null,
 
                 fetch: function ()
                 {
-                    var queryResults = this.inherited(arguments);
+                    if (this._inProgressfetch === null || this._inProgressfetch === undefined)
+                    {
+                        this._inProgressfetch = this.inherited(arguments);
+                    }
                     this._captureResults(queryResults, "fetch");
                     return queryResults;
                 },
                 fetchRange: function (args)
                 {
-                    var queryResults = this.inherited(arguments);
+                    if (this._inProgressfetchRange === null || this._inProgressfetchRange === undefined)
+                    {
+                        this._inProgressfetchRange = this.inherited(arguments);
+                    }
+                    var queryResults = this._inProgressfetchRange;
+
                     this._captureResults(queryResults, "fetchRange", args);
                     return queryResults;
                 },
@@ -94,7 +104,14 @@
                 {
                     var handler = lang.hitch(this, function (data)
                     {
-                        this._processResults(data, methodName, args);
+                        try
+                        {
+                            this._processResults(data, methodName, args);
+                        }
+                        finally
+                        {
+                            this["_inProgress" + methodName ] = null;
+                        }
                         if (!data.hasOwnProperty("results"))
                         {
                             this.emit("unexpected", data);
@@ -143,8 +160,8 @@
                             for (var i = currentResults.length - 1; i >= 0; i--)
                             {
                                 var currentResult = currentResults[i];
-                                var id = currentResult[idProperty];
-                                var newResultIndex = newResultsIdToIndexMap[id];
+                                var currentId = currentResult[idProperty];
+                                var newResultIndex = newResultsIdToIndexMap[currentId];
                                 if (newResultIndex === undefined)
                                 {
                                     this._pushChange("delete", currentResult, offset + i, offset + i, total);
@@ -153,7 +170,7 @@
                                         idProperty,
                                         this._currentResultsIdToIndexMap,
                                         i);
-                                    delete this._currentResultsIdToIndexMap[id];
+                                    delete this._currentResultsIdToIndexMap[currentId];
                                 }
                             }
 
@@ -174,11 +191,11 @@
                                 }
                                 else
                                 {
-                                    var currentResult = currentResults[previousIndex];
+                                    var current = currentResults[previousIndex];
                                     if (previousIndex === j)
                                     {
                                         currentResults[j] = newResult;
-                                        if (!util.equals(newResult, currentResult))
+                                        if (!util.equals(newResult, current))
                                         {
                                             this._pushChange("update", newResult, offset + j, previousIndex + offset, total);
                                         }
@@ -187,7 +204,7 @@
                                     {
                                         this._pushChange("update", newResult, offset + j, previousIndex + offset, total);
                                         currentResults.splice(previousIndex, 1);
-                                        currentResults.splice(j, 0, currentResult);
+                                        currentResults.splice(j, 0, current);
                                         updateIdToIndexMap(currentResults,
                                             idProperty,
                                             this._currentResultsIdToIndexMap,
@@ -198,9 +215,9 @@
                         }
                         else
                         {
-                            for (var j = 0; j < newResults.length; j++)
+                            for (var k = 0; k < newResults.length; k++)
                             {
-                                this._pushChange("add", newResults[j], offset + j, -1,  total);
+                                this._pushChange("add", newResults[k], offset + k, -1,  total);
                             }
                         }