Changes
[iotcloud.git] / version2 / src / java / iotcloud / Table.java
index 735d15021228c29019f5606ae43d8a49240304f1..b6801c0585e731bc8a4d499a00c973ab7c9c49a2 100644 (file)
@@ -22,7 +22,7 @@ import java.nio.ByteBuffer;
 final public class Table {
 
        /* Constants */
-       static final int FREE_SLOTS = 10; // Number of slots that should be kept free
+       static final int FREE_SLOTS = 2; // Number of slots that should be kept free // 10
        static final int SKIP_THRESHOLD = 10;
        static final double RESIZE_MULTIPLE = 1.2;
        static final double RESIZE_THRESHOLD = 0.75;
@@ -166,14 +166,34 @@ final public class Table {
 
                int livec = 0;
                int deadc = 0;
+
+               int casdasd = 0;
+
+               int liveslo = 0;
+
                for (long i = o; i < (n + 1); i++) {
                        Slot s = buffer.getSlot(i);
 
+
+                       if (s.isLive()) {
+                               liveslo++;
+                       }
+
                        Vector<Entry> entries = s.getEntries();
 
                        for (Entry e : entries) {
                                if (e.isLive()) {
                                        int type = e.getType();
+
+
+                                       if (type == 6) {
+                                               RejectedMessage rej = (RejectedMessage)e;
+                                               casdasd++;
+
+                                               System.out.println(rej.getMachineID());
+                                       }
+
+
                                        types[type] = types[type] + 1;
                                        num++;
                                        livec++;
@@ -187,6 +207,8 @@ final public class Table {
                        System.out.println(i + "    " + types[i]);
                }
                System.out.println("Live count:   " + livec);
+               System.out.println("Live Slot count:   " + liveslo);
+
                System.out.println("Dead count:   " + deadc);
                System.out.println("Old:   " + o);
                System.out.println("New:   " + n);
@@ -244,6 +266,9 @@ final public class Table {
                // Just pull the latest slots from the server
                Slot[] newslots = cloud.getSlots(sequenceNumber + 1);
                validateAndUpdate(newslots, true);
+               sendToServer(null);
+               updateLiveTransactionsAndStatus();
+
        }
 
        // public String toString() {
@@ -381,6 +406,7 @@ final public class Table {
                        }
 
                        NewKey newKey = new NewKey(null, keyName, machineId);
+
                        if (sendToServer(newKey)) {
                                // If successfully inserted
                                return true;
@@ -689,9 +715,12 @@ final public class Table {
                }
 
 
+
                try {
                        // While we have stuff that needs inserting into the block chain
                        while ((pendingTransactionQueue.size() > 0) || (pendingSendArbitrationRounds.size() > 0) || (newKey != null)) {
+
+
                                fromRetry = false;
 
                                if (hadPartialSendToServer) {
@@ -753,7 +782,7 @@ final public class Table {
 
                                                // New Key was successfully inserted into the block chain so dont want to insert it again
                                                newKey = null;
-                                       }
+                                       } 
 
                                        // Remove the aborts and commit parts that were sent from the pending to send queue
                                        for (Iterator<ArbitrationRound> iter = pendingSendArbitrationRounds.iterator(); iter.hasNext(); ) {
@@ -1184,9 +1213,12 @@ final public class Table {
         * Returns false if a resize was needed
         */
        private ThreeTuple<Boolean, Integer, Boolean> fillSlot(Slot slot, boolean resize, NewKey newKeyEntry) {
+
+
                int newSize = 0;
                if (liveSlotCount > bufferResizeThreshold) {
                        resize = true; //Resize is forced
+
                }
 
                if (resize) {
@@ -1215,9 +1247,10 @@ final public class Table {
                if (newKeyEntry != null) {
                        newKeyEntry.setSlot(slot);
                        if (slot.hasSpace(newKeyEntry)) {
+
                                slot.addEntry(newKeyEntry);
                                inserted = true;
-                       }
+                       } 
                }
 
                // Clear the transactions, aborts and commits that were sent previously
@@ -1524,11 +1557,16 @@ final public class Table {
 
 
                if (didFindTableStatus) {
-                       expectedsize = (prevslots < ((long) numberOfSlots)) ? (int) prevslots : expectedsize;
+                       // expectedsize = (prevslots < ((long) numberOfSlots)) ? (int) prevslots : expectedsize;
+                       // System.out.println("Here2: " + expectedsize + "    " + numberOfSlots + "   " + prevslots);
+
                } else {
                        expectedsize = (prevslots < ((long) numberOfSlots)) ? (int) prevslots : numberOfSlots;
+                       // System.out.println("Here: " + expectedsize);
                }
-               
+
+               // System.out.println(numberOfSlots);
+
                didFindTableStatus = true;
                currMaxSize = numberOfSlots;
        }
@@ -1573,6 +1611,7 @@ final public class Table {
                // Change the number of local slots to the new size
                numberOfSlots = (int)currMaxSize;
 
+
                // Recalculate the resize threshold since the size of the local buffer has changed
                setResizeThreshold();
        }