Skip to content

Commit df54f1b

Browse files
committed
More exception handling fixes and simplification
1 parent 16faf97 commit df54f1b

File tree

2 files changed

+26
-30
lines changed

2 files changed

+26
-30
lines changed

convex-peer/src/main/java/convex/peer/BeliefPropagator.java

Lines changed: 19 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -276,37 +276,27 @@ protected boolean maybeMergeBeliefs(Belief... newBeliefs) {
276276
*/
277277
private Belief awaitBelief() throws InterruptedException {
278278
ArrayList<Message> beliefMessages=new ArrayList<>();
279-
try {
280279

281-
// if we did a belief merge recently, pause for a bit to await more Beliefs
282-
LoadMonitor.down();
283-
Message firstEvent=beliefQueue.poll(AWAIT_BELIEFS_PAUSE, TimeUnit.MILLISECONDS);
284-
LoadMonitor.up();
285-
if (firstEvent==null) return null; // nothing arrived
286-
287-
beliefMessages.add(firstEvent);
288-
beliefQueue.drainTo(beliefMessages);
289-
HashMap<AccountKey,SignedData<Order>> newOrders=belief.getOrdersHashMap();
290-
// log.info("Merging Beliefs: "+allBeliefs.size());
291-
292-
boolean anyOrderChanged=false;
293-
for (Message m: beliefMessages) {
294-
boolean changed=mergeBeliefMessage(newOrders,m);
295-
if (changed) anyOrderChanged=true;
296-
}
297-
if (!anyOrderChanged) return null;
298-
299-
Belief newBelief= Belief.create(newOrders);
300-
return newBelief;
301-
302-
} catch (InterruptedException e) {
303-
// This is expected sometimes, e.g. peer shutdown
304-
throw e;
305-
} catch (Exception e) {
306-
// we didn't expect this!
307-
log.warn("UNEXPECTED error awaiting Belief",e);
308-
return null;
280+
// if we did a belief merge recently, pause for a bit to await more Beliefs
281+
LoadMonitor.down();
282+
Message firstEvent=beliefQueue.poll(AWAIT_BELIEFS_PAUSE, TimeUnit.MILLISECONDS);
283+
LoadMonitor.up();
284+
if (firstEvent==null) return null; // nothing arrived
285+
286+
beliefMessages.add(firstEvent);
287+
beliefQueue.drainTo(beliefMessages);
288+
HashMap<AccountKey,SignedData<Order>> newOrders=belief.getOrdersHashMap();
289+
// log.info("Merging Beliefs: "+allBeliefs.size());
290+
291+
boolean anyOrderChanged=false;
292+
for (Message m: beliefMessages) {
293+
boolean changed=mergeBeliefMessage(newOrders,m);
294+
if (changed) anyOrderChanged=true;
309295
}
296+
if (!anyOrderChanged) return null;
297+
298+
Belief newBelief= Belief.create(newOrders);
299+
return newBelief;
310300
}
311301

312302

convex-peer/src/test/java/convex/peer/TestNetwork.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package convex.peer;
22

3+
import java.io.IOException;
34
import java.util.ArrayList;
45
import java.util.Arrays;
56
import java.util.List;
7+
import java.util.concurrent.TimeoutException;
68
import java.util.stream.Collectors;
79

810
import org.slf4j.Logger;
@@ -16,6 +18,7 @@
1618
import convex.core.crypto.AKeyPair;
1719
import convex.core.data.AccountKey;
1820
import convex.core.data.Address;
21+
import convex.core.exceptions.ResultException;
1922
import convex.core.init.Init;
2023
import convex.core.util.Utils;
2124

@@ -98,8 +101,11 @@ public synchronized ConvexRemote getClient(AKeyPair kp) {
98101
network.CONVEX.transferSync(addr, Coin.GOLD);
99102
ConvexRemote client=Convex.connect(network.SERVER.getHostAddress(),addr,kp);
100103
return client;
101-
} catch (Exception t) {
104+
} catch (IOException | ResultException | TimeoutException t) {
102105
throw Utils.sneakyThrow(t);
106+
} catch (InterruptedException e) {
107+
Thread.currentThread().interrupt();
108+
return null;
103109
}
104110
}
105111

0 commit comments

Comments
 (0)