# HG changeset patch # User kazz # Date 1326608281 -32400 # Node ID bb075e103cd32be0cb8599bd1c96c9253ccfaaf0 # Parent 433e601a8e28484c7a146d6986ec1b65cbf4b4ee bug fix for take() diff -r 433e601a8e28 -r bb075e103cd3 build.xml --- a/build.xml Sun Jan 15 12:17:30 2012 +0900 +++ b/build.xml Sun Jan 15 15:18:01 2012 +0900 @@ -20,6 +20,7 @@ + diff -r 433e601a8e28 -r bb075e103cd3 src/alice/daemon/IncomingTcpConnection.java --- a/src/alice/daemon/IncomingTcpConnection.java Sun Jan 15 12:17:30 2012 +0900 +++ b/src/alice/daemon/IncomingTcpConnection.java Sun Jan 15 15:18:01 2012 +0900 @@ -47,7 +47,6 @@ msgBuf.flip(); CommandMessage msg = msgpack.read(msgBuf, CommandMessage.class); msgBuf.flip(); - System.out.println(msgpack.read(msgBuf)); CommandType type = CommandType.getCommandTypeFromId(msg.type); LocalDataSegmentManager lmanager = (LocalDataSegmentManager)DataSegment.get("local"); DataSegmentKey dsKey = lmanager.getDataSegmentKey(msg.key); diff -r 433e601a8e28 -r bb075e103cd3 src/alice/datasegment/DataSegmentKey.java --- a/src/alice/datasegment/DataSegmentKey.java Sun Jan 15 12:17:30 2012 +0900 +++ b/src/alice/datasegment/DataSegmentKey.java Sun Jan 15 15:18:01 2012 +0900 @@ -1,6 +1,7 @@ package alice.datasegment; import java.util.ArrayList; +import java.util.Iterator; import java.util.LinkedList; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.atomic.AtomicInteger; @@ -40,19 +41,18 @@ DataSegmentValue dsv = new DataSegmentValue(index, cmd.val); dataList.add(dsv); // run waiting peek and take - LinkedList removeList = new LinkedList(); - for (Command waitCmd : waitList) { + boolean takeFlag = true; + for (Iterator iter = waitList.iterator(); iter.hasNext() && takeFlag; ) { + Command waitCmd = iter.next(); if (waitCmd.index < index) { waitCmd.replyQueue.put(new Command(CommandType.REPLY, null, null, cmd.val, index, waitCmd.seq, null, null)); - removeList.add(waitCmd); + iter.remove(); if (waitCmd.type == CommandType.TAKE) { // delete data, if it run take cmd. dataList.remove(dsv); break; } } - } - for (Command rmCmd : removeList) { - waitList.remove(rmCmd); + } break; case PEEK: @@ -73,14 +73,18 @@ waitList.add(cmd); break; } - for (DataSegmentValue data : dataList) { + boolean waitFlag = true; + for (Iterator iter = dataList.iterator(); iter.hasNext(); ) { + DataSegmentValue data = iter.next(); if (data.index > cmd.index) { cmd.replyQueue.put(new Command(CommandType.REPLY, null, null, data.val, data.index, cmd.seq, null, null)); - dataList.remove(data); + iter.remove(); + waitFlag = false; break; } } - waitList.add(cmd); + if (waitFlag) + waitList.add(cmd); break; case REMOVE: // TODO: implements later diff -r 433e601a8e28 -r bb075e103cd3 src/alice/datasegment/SocketDataSegmentManager.java --- a/src/alice/datasegment/SocketDataSegmentManager.java Sun Jan 15 12:17:30 2012 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -package alice.datasegment; - -import org.msgpack.type.Value; - -import alice.codesegment.CodeSegment; - -public class SocketDataSegmentManager extends DataSegmentManager { - - @Override - public void put(String key, Value val) { - // TODO Auto-generated method stub - - } - - @Override - public void update(String key, Value val) { - // TODO Auto-generated method stub - - } - - @Override - public void take(String argKey, String key, int index, CodeSegment cs) { - // TODO Auto-generated method stub - - } - - @Override - public void peek(String argKey, String key, int index, CodeSegment cs) { - // TODO Auto-generated method stub - - } - - @Override - public void remove(String key) { - // TODO Auto-generated method stub - - } - -} diff -r 433e601a8e28 -r bb075e103cd3 src/alice/test/codesegment/TestRemoteAlice.java --- a/src/alice/test/codesegment/TestRemoteAlice.java Sun Jan 15 12:17:30 2012 +0900 +++ b/src/alice/test/codesegment/TestRemoteAlice.java Sun Jan 15 15:18:01 2012 +0900 @@ -2,7 +2,6 @@ import java.io.IOException; import java.net.InetSocketAddress; -import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import alice.codesegment.CodeSegment; @@ -16,10 +15,6 @@ public static void main(String[] args) { Config conf = new Config(args); - System.out.println(conf.port); - System.out.println(conf.hostname); - System.out.println(conf.connectPort); - System.out.println(conf.key); final AliceDaemon daemon = new AliceDaemon(conf); new Thread() {