Committed by
Gerrit Code Review
Scrubbing store related TODO/FIXMEs
Change-Id: I4e6bf026845bbd5be127ecacd9956d12f3386c9e
Showing
16 changed files
with
19 additions
and
51 deletions
| ... | @@ -51,7 +51,7 @@ public interface LinkResourceStore { | ... | @@ -51,7 +51,7 @@ public interface LinkResourceStore { |
| 51 | * Returns resources allocated for an Intent. | 51 | * Returns resources allocated for an Intent. |
| 52 | * | 52 | * |
| 53 | * @param intentId the target Intent's ID | 53 | * @param intentId the target Intent's ID |
| 54 | - * @return allocated resources | 54 | + * @return allocated resources or null if no resource is allocated |
| 55 | */ | 55 | */ |
| 56 | LinkResourceAllocations getAllocations(IntentId intentId); | 56 | LinkResourceAllocations getAllocations(IntentId intentId); |
| 57 | 57 | ... | ... |
| ... | @@ -57,7 +57,7 @@ public class LeadershipManager implements LeadershipService { | ... | @@ -57,7 +57,7 @@ public class LeadershipManager implements LeadershipService { |
| 57 | // a unexpected error. | 57 | // a unexpected error. |
| 58 | private static final int WAIT_BEFORE_RETRY_MS = 2000; | 58 | private static final int WAIT_BEFORE_RETRY_MS = 2000; |
| 59 | 59 | ||
| 60 | - // TODO: Appropriate Thread pool sizing. | 60 | + // TODO: Make Thread pool size configurable. |
| 61 | private final ScheduledExecutorService threadPool = | 61 | private final ScheduledExecutorService threadPool = |
| 62 | Executors.newScheduledThreadPool(25, namedThreads("leadership-manager-%d")); | 62 | Executors.newScheduledThreadPool(25, namedThreads("leadership-manager-%d")); |
| 63 | 63 | ... | ... |
| ... | @@ -98,7 +98,6 @@ import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor; | ... | @@ -98,7 +98,6 @@ import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor; |
| 98 | import static org.onosproject.store.device.impl.GossipDeviceStoreMessageSubjects.DEVICE_ADVERTISE; | 98 | import static org.onosproject.store.device.impl.GossipDeviceStoreMessageSubjects.DEVICE_ADVERTISE; |
| 99 | import static org.onosproject.store.device.impl.GossipDeviceStoreMessageSubjects.DEVICE_REMOVE_REQ; | 99 | import static org.onosproject.store.device.impl.GossipDeviceStoreMessageSubjects.DEVICE_REMOVE_REQ; |
| 100 | 100 | ||
| 101 | -// TODO: give me a better name | ||
| 102 | /** | 101 | /** |
| 103 | * Manages inventory of infrastructure devices using gossip protocol to distribute | 102 | * Manages inventory of infrastructure devices using gossip protocol to distribute |
| 104 | * information. | 103 | * information. |
| ... | @@ -167,6 +166,10 @@ public class GossipDeviceStore | ... | @@ -167,6 +166,10 @@ public class GossipDeviceStore |
| 167 | 166 | ||
| 168 | private ScheduledExecutorService backgroundExecutor; | 167 | private ScheduledExecutorService backgroundExecutor; |
| 169 | 168 | ||
| 169 | + // TODO make these anti-entropy parameters configurable | ||
| 170 | + private long initialDelaySec = 5; | ||
| 171 | + private long periodSec = 5; | ||
| 172 | + | ||
| 170 | 173 | ||
| 171 | @Activate | 174 | @Activate |
| 172 | public void activate() { | 175 | public void activate() { |
| ... | @@ -189,9 +192,6 @@ public class GossipDeviceStore | ... | @@ -189,9 +192,6 @@ public class GossipDeviceStore |
| 189 | backgroundExecutor = | 192 | backgroundExecutor = |
| 190 | newSingleThreadScheduledExecutor(minPriority(namedThreads("device-bg-%d"))); | 193 | newSingleThreadScheduledExecutor(minPriority(namedThreads("device-bg-%d"))); |
| 191 | 194 | ||
| 192 | - // TODO: Make these configurable | ||
| 193 | - long initialDelaySec = 5; | ||
| 194 | - long periodSec = 5; | ||
| 195 | // start anti-entropy thread | 195 | // start anti-entropy thread |
| 196 | backgroundExecutor.scheduleAtFixedRate(new SendAdvertisementTask(), | 196 | backgroundExecutor.scheduleAtFixedRate(new SendAdvertisementTask(), |
| 197 | initialDelaySec, periodSec, TimeUnit.SECONDS); | 197 | initialDelaySec, periodSec, TimeUnit.SECONDS); |
| ... | @@ -412,7 +412,6 @@ public class GossipDeviceStore | ... | @@ -412,7 +412,6 @@ public class GossipDeviceStore |
| 412 | } | 412 | } |
| 413 | boolean removed = availableDevices.remove(deviceId); | 413 | boolean removed = availableDevices.remove(deviceId); |
| 414 | if (removed) { | 414 | if (removed) { |
| 415 | - // TODO: broadcast ... DOWN only? | ||
| 416 | return new DeviceEvent(DEVICE_AVAILABILITY_CHANGED, device, null); | 415 | return new DeviceEvent(DEVICE_AVAILABILITY_CHANGED, device, null); |
| 417 | } | 416 | } |
| 418 | return null; | 417 | return null; |
| ... | @@ -885,7 +884,7 @@ public class GossipDeviceStore | ... | @@ -885,7 +884,7 @@ public class GossipDeviceStore |
| 885 | if (e.getKey().equals(primary)) { | 884 | if (e.getKey().equals(primary)) { |
| 886 | continue; | 885 | continue; |
| 887 | } | 886 | } |
| 888 | - // TODO: should keep track of Description timestamp | 887 | + // Note: should keep track of Description timestamp in the future |
| 889 | // and only merge conflicting keys when timestamp is newer. | 888 | // and only merge conflicting keys when timestamp is newer. |
| 890 | // Currently assuming there will never be a key conflict between | 889 | // Currently assuming there will never be a key conflict between |
| 891 | // providers | 890 | // providers |
| ... | @@ -913,7 +912,6 @@ public class GossipDeviceStore | ... | @@ -913,7 +912,6 @@ public class GossipDeviceStore |
| 913 | ProviderId primary = pickPrimaryPID(descsMap); | 912 | ProviderId primary = pickPrimaryPID(descsMap); |
| 914 | DeviceDescriptions primDescs = descsMap.get(primary); | 913 | DeviceDescriptions primDescs = descsMap.get(primary); |
| 915 | // if no primary, assume not enabled | 914 | // if no primary, assume not enabled |
| 916 | - // TODO: revisit this default port enabled/disabled behavior | ||
| 917 | boolean isEnabled = false; | 915 | boolean isEnabled = false; |
| 918 | DefaultAnnotations annotations = DefaultAnnotations.builder().build(); | 916 | DefaultAnnotations annotations = DefaultAnnotations.builder().build(); |
| 919 | 917 | ||
| ... | @@ -927,7 +925,7 @@ public class GossipDeviceStore | ... | @@ -927,7 +925,7 @@ public class GossipDeviceStore |
| 927 | if (e.getKey().equals(primary)) { | 925 | if (e.getKey().equals(primary)) { |
| 928 | continue; | 926 | continue; |
| 929 | } | 927 | } |
| 930 | - // TODO: should keep track of Description timestamp | 928 | + // Note: should keep track of Description timestamp in the future |
| 931 | // and only merge conflicting keys when timestamp is newer. | 929 | // and only merge conflicting keys when timestamp is newer. |
| 932 | // Currently assuming there will never be a key conflict between | 930 | // Currently assuming there will never be a key conflict between |
| 933 | // providers | 931 | // providers |
| ... | @@ -968,7 +966,6 @@ public class GossipDeviceStore | ... | @@ -968,7 +966,6 @@ public class GossipDeviceStore |
| 968 | return providerDescs.get(pid); | 966 | return providerDescs.get(pid); |
| 969 | } | 967 | } |
| 970 | 968 | ||
| 971 | - // TODO: should we be throwing exception? | ||
| 972 | private void unicastMessage(NodeId recipient, MessageSubject subject, Object event) throws IOException { | 969 | private void unicastMessage(NodeId recipient, MessageSubject subject, Object event) throws IOException { |
| 973 | ClusterMessage message = new ClusterMessage( | 970 | ClusterMessage message = new ClusterMessage( |
| 974 | clusterService.getLocalNode().id(), | 971 | clusterService.getLocalNode().id(), |
| ... | @@ -977,7 +974,6 @@ public class GossipDeviceStore | ... | @@ -977,7 +974,6 @@ public class GossipDeviceStore |
| 977 | clusterCommunicator.unicast(message, recipient); | 974 | clusterCommunicator.unicast(message, recipient); |
| 978 | } | 975 | } |
| 979 | 976 | ||
| 980 | - // TODO: should we be throwing exception? | ||
| 981 | private void broadcastMessage(MessageSubject subject, Object event) throws IOException { | 977 | private void broadcastMessage(MessageSubject subject, Object event) throws IOException { |
| 982 | ClusterMessage message = new ClusterMessage( | 978 | ClusterMessage message = new ClusterMessage( |
| 983 | clusterService.getLocalNode().id(), | 979 | clusterService.getLocalNode().id(), | ... | ... |
| ... | @@ -17,7 +17,6 @@ package org.onosproject.store.device.impl; | ... | @@ -17,7 +17,6 @@ package org.onosproject.store.device.impl; |
| 17 | 17 | ||
| 18 | import org.onosproject.store.cluster.messaging.MessageSubject; | 18 | import org.onosproject.store.cluster.messaging.MessageSubject; |
| 19 | 19 | ||
| 20 | -// TODO: add prefix to assure uniqueness. | ||
| 21 | /** | 20 | /** |
| 22 | * MessageSubjects used by GossipDeviceStore peer-peer communication. | 21 | * MessageSubjects used by GossipDeviceStore peer-peer communication. |
| 23 | */ | 22 | */ | ... | ... |
| ... | @@ -503,7 +503,7 @@ public class DistributedFlowRuleStore | ... | @@ -503,7 +503,7 @@ public class DistributedFlowRuleStore |
| 503 | } | 503 | } |
| 504 | 504 | ||
| 505 | // TODO: Confirm if this behavior is correct. See SimpleFlowRuleStore | 505 | // TODO: Confirm if this behavior is correct. See SimpleFlowRuleStore |
| 506 | - // TODO: also update backup. | 506 | + // TODO: also update backup if the behavior is correct. |
| 507 | flowEntries.put(did, new DefaultFlowEntry(rule)); | 507 | flowEntries.put(did, new DefaultFlowEntry(rule)); |
| 508 | } finally { | 508 | } finally { |
| 509 | flowEntriesLock.writeLock().unlock(); | 509 | flowEntriesLock.writeLock().unlock(); |
| ... | @@ -541,7 +541,7 @@ public class DistributedFlowRuleStore | ... | @@ -541,7 +541,7 @@ public class DistributedFlowRuleStore |
| 541 | Future<byte[]> responseFuture = clusterCommunicator.sendAndReceive(message, replicaInfo.master().get()); | 541 | Future<byte[]> responseFuture = clusterCommunicator.sendAndReceive(message, replicaInfo.master().get()); |
| 542 | return SERIALIZER.decode(responseFuture.get(FLOW_RULE_STORE_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)); | 542 | return SERIALIZER.decode(responseFuture.get(FLOW_RULE_STORE_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)); |
| 543 | } catch (IOException | TimeoutException | ExecutionException | InterruptedException e) { | 543 | } catch (IOException | TimeoutException | ExecutionException | InterruptedException e) { |
| 544 | - // FIXME: throw a FlowStoreException | 544 | + // TODO: Retry against latest master or throw a FlowStoreException |
| 545 | throw new RuntimeException(e); | 545 | throw new RuntimeException(e); |
| 546 | } | 546 | } |
| 547 | } | 547 | } |
| ... | @@ -586,8 +586,6 @@ public class DistributedFlowRuleStore | ... | @@ -586,8 +586,6 @@ public class DistributedFlowRuleStore |
| 586 | for (Entry<FlowId, ImmutableList<StoredFlowEntry>> e | 586 | for (Entry<FlowId, ImmutableList<StoredFlowEntry>> e |
| 587 | : backupFlowTable.entrySet()) { | 587 | : backupFlowTable.entrySet()) { |
| 588 | 588 | ||
| 589 | - // TODO: should we be directly updating internal structure or | ||
| 590 | - // should we be triggering event? | ||
| 591 | log.trace("loading {}", e.getValue()); | 589 | log.trace("loading {}", e.getValue()); |
| 592 | for (StoredFlowEntry entry : e.getValue()) { | 590 | for (StoredFlowEntry entry : e.getValue()) { |
| 593 | flowEntries.remove(did, entry); | 591 | flowEntries.remove(did, entry); |
| ... | @@ -714,7 +712,7 @@ public class DistributedFlowRuleStore | ... | @@ -714,7 +712,7 @@ public class DistributedFlowRuleStore |
| 714 | // This node is no longer the master holder, | 712 | // This node is no longer the master holder, |
| 715 | // clean local structure | 713 | // clean local structure |
| 716 | removeFromPrimary(did); | 714 | removeFromPrimary(did); |
| 717 | - // FIXME: probably should stop pending backup activities in | 715 | + // TODO: probably should stop pending backup activities in |
| 718 | // executors to avoid overwriting with old value | 716 | // executors to avoid overwriting with old value |
| 719 | } | 717 | } |
| 720 | break; | 718 | break; |
| ... | @@ -767,7 +765,6 @@ public class DistributedFlowRuleStore | ... | @@ -767,7 +765,6 @@ public class DistributedFlowRuleStore |
| 767 | } else { | 765 | } else { |
| 768 | success = backupFlowTable.replace(id, original, newValue); | 766 | success = backupFlowTable.replace(id, original, newValue); |
| 769 | } | 767 | } |
| 770 | - // TODO retry? | ||
| 771 | if (!success) { | 768 | if (!success) { |
| 772 | log.error("Updating backup failed."); | 769 | log.error("Updating backup failed."); |
| 773 | } | 770 | } |
| ... | @@ -790,7 +787,6 @@ public class DistributedFlowRuleStore | ... | @@ -790,7 +787,6 @@ public class DistributedFlowRuleStore |
| 790 | } else { | 787 | } else { |
| 791 | success = backupFlowTable.replace(id, original, newValue); | 788 | success = backupFlowTable.replace(id, original, newValue); |
| 792 | } | 789 | } |
| 793 | - // TODO retry? | ||
| 794 | if (!success) { | 790 | if (!success) { |
| 795 | log.error("Updating backup failed."); | 791 | log.error("Updating backup failed."); |
| 796 | } | 792 | } | ... | ... |
| ... | @@ -88,7 +88,6 @@ import com.google.common.collect.Multimap; | ... | @@ -88,7 +88,6 @@ import com.google.common.collect.Multimap; |
| 88 | import com.google.common.collect.Multimaps; | 88 | import com.google.common.collect.Multimaps; |
| 89 | import com.google.common.collect.SetMultimap; | 89 | import com.google.common.collect.SetMultimap; |
| 90 | 90 | ||
| 91 | -//TODO: multi-provider, annotation not supported. | ||
| 92 | /** | 91 | /** |
| 93 | * Manages inventory of end-station hosts in distributed data store | 92 | * Manages inventory of end-station hosts in distributed data store |
| 94 | * that uses optimistic replication and gossip based techniques. | 93 | * that uses optimistic replication and gossip based techniques. | ... | ... |
| ... | @@ -30,8 +30,6 @@ import java.util.concurrent.TimeUnit; | ... | @@ -30,8 +30,6 @@ import java.util.concurrent.TimeUnit; |
| 30 | 30 | ||
| 31 | import static com.google.common.base.Preconditions.checkNotNull; | 31 | import static com.google.common.base.Preconditions.checkNotNull; |
| 32 | 32 | ||
| 33 | -// TODO: implementation is incomplete | ||
| 34 | - | ||
| 35 | /** | 33 | /** |
| 36 | * Wrapper around IQueue<byte[]> which serializes/deserializes | 34 | * Wrapper around IQueue<byte[]> which serializes/deserializes |
| 37 | * key and value using StoreSerializer. | 35 | * key and value using StoreSerializer. | ... | ... |
| ... | @@ -28,7 +28,6 @@ import org.onosproject.store.serializers.StoreSerializer; | ... | @@ -28,7 +28,6 @@ import org.onosproject.store.serializers.StoreSerializer; |
| 28 | import com.hazelcast.core.TransactionalMap; | 28 | import com.hazelcast.core.TransactionalMap; |
| 29 | import com.hazelcast.query.Predicate; | 29 | import com.hazelcast.query.Predicate; |
| 30 | 30 | ||
| 31 | -// TODO: implement Predicate, etc. if we need them. | ||
| 32 | /** | 31 | /** |
| 33 | * Wrapper around TransactionalMap<byte[], byte[]> which serializes/deserializes | 32 | * Wrapper around TransactionalMap<byte[], byte[]> which serializes/deserializes |
| 34 | * key and value using StoreSerializer. | 33 | * key and value using StoreSerializer. |
| ... | @@ -100,7 +99,6 @@ public class STxMap<K, V> implements TransactionalMap<K, V> { | ... | @@ -100,7 +99,6 @@ public class STxMap<K, V> implements TransactionalMap<K, V> { |
| 100 | 99 | ||
| 101 | @Override | 100 | @Override |
| 102 | public V getForUpdate(Object key) { | 101 | public V getForUpdate(Object key) { |
| 103 | - // TODO Auto-generated method stub | ||
| 104 | return deserializeVal(m.getForUpdate(serializeKey(key))); | 102 | return deserializeVal(m.getForUpdate(serializeKey(key))); |
| 105 | } | 103 | } |
| 106 | 104 | ... | ... |
| ... | @@ -90,7 +90,7 @@ public class DistributedIntentStore | ... | @@ -90,7 +90,7 @@ public class DistributedIntentStore |
| 90 | private static final String STATES_TABLE = "intent-states"; | 90 | private static final String STATES_TABLE = "intent-states"; |
| 91 | private CMap<IntentId, IntentState> states; | 91 | private CMap<IntentId, IntentState> states; |
| 92 | 92 | ||
| 93 | - // TODO left behind transient state issue: ONOS-103 | 93 | + // TODO transient state issue remains for this impl.: ONOS-103 |
| 94 | // Map to store instance local intermediate state transition | 94 | // Map to store instance local intermediate state transition |
| 95 | private transient Map<IntentId, IntentState> transientStates = new ConcurrentHashMap<>(); | 95 | private transient Map<IntentId, IntentState> transientStates = new ConcurrentHashMap<>(); |
| 96 | 96 | ||
| ... | @@ -142,7 +142,7 @@ public class DistributedIntentStore | ... | @@ -142,7 +142,7 @@ public class DistributedIntentStore |
| 142 | getIntentTimer = createResponseTimer("getIntent"); | 142 | getIntentTimer = createResponseTimer("getIntent"); |
| 143 | getIntentStateTimer = createResponseTimer("getIntentState"); | 143 | getIntentStateTimer = createResponseTimer("getIntentState"); |
| 144 | 144 | ||
| 145 | - // FIXME: We need a way to add serializer for intents which has been plugged-in. | 145 | + // We need a way to add serializer for intents which has been plugged-in. |
| 146 | // As a short term workaround, relax Kryo config to | 146 | // As a short term workaround, relax Kryo config to |
| 147 | // registrationRequired=false | 147 | // registrationRequired=false |
| 148 | serializer = new KryoSerializer() { | 148 | serializer = new KryoSerializer() { |
| ... | @@ -264,7 +264,6 @@ public class DistributedIntentStore | ... | @@ -264,7 +264,6 @@ public class DistributedIntentStore |
| 264 | } | 264 | } |
| 265 | } | 265 | } |
| 266 | 266 | ||
| 267 | - // FIXME temporary workaround until we fix our state machine | ||
| 268 | private void verify(boolean expression, String errorMessageTemplate, Object... errorMessageArgs) { | 267 | private void verify(boolean expression, String errorMessageTemplate, Object... errorMessageArgs) { |
| 269 | if (onlyLogTransitionError) { | 268 | if (onlyLogTransitionError) { |
| 270 | if (!expression) { | 269 | if (!expression) { |
| ... | @@ -488,7 +487,6 @@ public class DistributedIntentStore | ... | @@ -488,7 +487,6 @@ public class DistributedIntentStore |
| 488 | return failed; | 487 | return failed; |
| 489 | } else { | 488 | } else { |
| 490 | // everything failed | 489 | // everything failed |
| 491 | - // FIXME what to do with events? | ||
| 492 | return batch.operations(); | 490 | return batch.operations(); |
| 493 | } | 491 | } |
| 494 | } | 492 | } | ... | ... |
| ... | @@ -529,7 +529,7 @@ public class GossipLinkStore | ... | @@ -529,7 +529,7 @@ public class GossipLinkStore |
| 529 | continue; | 529 | continue; |
| 530 | } | 530 | } |
| 531 | 531 | ||
| 532 | - // TODO: should keep track of Description timestamp | 532 | + // Note: In the long run we should keep track of Description timestamp |
| 533 | // and only merge conflicting keys when timestamp is newer | 533 | // and only merge conflicting keys when timestamp is newer |
| 534 | // Currently assuming there will never be a key conflict between | 534 | // Currently assuming there will never be a key conflict between |
| 535 | // providers | 535 | // providers | ... | ... |
| ... | @@ -299,7 +299,7 @@ public class DistributedMastershipStore | ... | @@ -299,7 +299,7 @@ public class DistributedMastershipStore |
| 299 | } else { | 299 | } else { |
| 300 | // no master candidate | 300 | // no master candidate |
| 301 | roleMap.put(deviceId, rv); | 301 | roleMap.put(deviceId, rv); |
| 302 | - // TODO: Should there be new event type for no MASTER? | 302 | + // TBD: Should there be new event type for no MASTER? |
| 303 | return new MastershipEvent(MASTER_CHANGED, deviceId, rv.roleInfo()); | 303 | return new MastershipEvent(MASTER_CHANGED, deviceId, rv.roleInfo()); |
| 304 | } | 304 | } |
| 305 | case STANDBY: | 305 | case STANDBY: | ... | ... |
| ... | @@ -78,7 +78,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { | ... | @@ -78,7 +78,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { |
| 78 | 78 | ||
| 79 | private final Logger log = getLogger(getClass()); | 79 | private final Logger log = getLogger(getClass()); |
| 80 | 80 | ||
| 81 | - // FIXME: what is the Bandwidth unit? | ||
| 82 | private static final Bandwidth DEFAULT_BANDWIDTH = Bandwidth.valueOf(1_000); | 81 | private static final Bandwidth DEFAULT_BANDWIDTH = Bandwidth.valueOf(1_000); |
| 83 | 82 | ||
| 84 | // table to store current allocations | 83 | // table to store current allocations |
| ... | @@ -143,7 +142,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { | ... | @@ -143,7 +142,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { |
| 143 | } | 142 | } |
| 144 | 143 | ||
| 145 | private Set<? extends ResourceAllocation> getResourceCapacity(ResourceType type, Link link) { | 144 | private Set<? extends ResourceAllocation> getResourceCapacity(ResourceType type, Link link) { |
| 146 | - // TODO: plugin/provider mechanism to add resource type in the future? | ||
| 147 | if (type == ResourceType.BANDWIDTH) { | 145 | if (type == ResourceType.BANDWIDTH) { |
| 148 | return ImmutableSet.of(getBandwidthResourceCapacity(link)); | 146 | return ImmutableSet.of(getBandwidthResourceCapacity(link)); |
| 149 | } | 147 | } |
| ... | @@ -154,7 +152,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { | ... | @@ -154,7 +152,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { |
| 154 | } | 152 | } |
| 155 | 153 | ||
| 156 | private Set<LambdaResourceAllocation> getLambdaResourceCapacity(Link link) { | 154 | private Set<LambdaResourceAllocation> getLambdaResourceCapacity(Link link) { |
| 157 | - // FIXME enumerate all the possible link/port lambdas | ||
| 158 | Set<LambdaResourceAllocation> allocations = new HashSet<>(); | 155 | Set<LambdaResourceAllocation> allocations = new HashSet<>(); |
| 159 | try { | 156 | try { |
| 160 | final int waves = Integer.parseInt(link.annotations().value(wavesAnnotation)); | 157 | final int waves = Integer.parseInt(link.annotations().value(wavesAnnotation)); |
| ... | @@ -323,7 +320,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { | ... | @@ -323,7 +320,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { |
| 323 | if (log.isDebugEnabled()) { | 320 | if (log.isDebugEnabled()) { |
| 324 | logFailureDetail(batch, result); | 321 | logFailureDetail(batch, result); |
| 325 | } | 322 | } |
| 326 | - // FIXME throw appropriate exception, with what failed. | ||
| 327 | checkState(result.isSuccessful(), "Allocation failed"); | 323 | checkState(result.isSuccessful(), "Allocation failed"); |
| 328 | } | 324 | } |
| 329 | } | 325 | } |
| ... | @@ -389,7 +385,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { | ... | @@ -389,7 +385,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { |
| 389 | double bwLeft = bw.bandwidth().toDouble(); | 385 | double bwLeft = bw.bandwidth().toDouble(); |
| 390 | bwLeft -= ((BandwidthResourceAllocation) req).bandwidth().toDouble(); | 386 | bwLeft -= ((BandwidthResourceAllocation) req).bandwidth().toDouble(); |
| 391 | if (bwLeft < 0) { | 387 | if (bwLeft < 0) { |
| 392 | - // FIXME throw appropriate Exception | ||
| 393 | checkState(bwLeft >= 0, | 388 | checkState(bwLeft >= 0, |
| 394 | "There's no Bandwidth left on %s. %s", | 389 | "There's no Bandwidth left on %s. %s", |
| 395 | link, bwLeft); | 390 | link, bwLeft); |
| ... | @@ -399,7 +394,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { | ... | @@ -399,7 +394,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { |
| 399 | // check if allocation should be accepted | 394 | // check if allocation should be accepted |
| 400 | if (!avail.contains(req)) { | 395 | if (!avail.contains(req)) { |
| 401 | // requested lambda was not available | 396 | // requested lambda was not available |
| 402 | - // FIXME throw appropriate exception | ||
| 403 | checkState(avail.contains(req), | 397 | checkState(avail.contains(req), |
| 404 | "Allocating %s on %s failed", | 398 | "Allocating %s on %s failed", |
| 405 | req, link); | 399 | req, link); |
| ... | @@ -433,7 +427,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { | ... | @@ -433,7 +427,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { |
| 433 | final String dbIntentId = toIntentDbKey(intendId); | 427 | final String dbIntentId = toIntentDbKey(intendId); |
| 434 | final Collection<Link> links = allocations.links(); | 428 | final Collection<Link> links = allocations.links(); |
| 435 | 429 | ||
| 436 | - // TODO: does release must happen in a batch? | ||
| 437 | boolean success; | 430 | boolean success; |
| 438 | do { | 431 | do { |
| 439 | Builder tx = BatchWriteRequest.newBuilder(); | 432 | Builder tx = BatchWriteRequest.newBuilder(); |
| ... | @@ -476,7 +469,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { | ... | @@ -476,7 +469,6 @@ public class DistributedLinkResourceStore implements LinkResourceStore { |
| 476 | checkNotNull(intentId); | 469 | checkNotNull(intentId); |
| 477 | VersionedValue vv = databaseService.get(INTENT_ALLOCATIONS, toIntentDbKey(intentId)); | 470 | VersionedValue vv = databaseService.get(INTENT_ALLOCATIONS, toIntentDbKey(intentId)); |
| 478 | if (vv == null) { | 471 | if (vv == null) { |
| 479 | - // FIXME: should we return null or LinkResourceAllocations with nothing allocated? | ||
| 480 | return null; | 472 | return null; |
| 481 | } | 473 | } |
| 482 | LinkResourceAllocations allocations = decodeIntentAllocations(vv.value()); | 474 | LinkResourceAllocations allocations = decodeIntentAllocations(vv.value()); |
| ... | @@ -486,7 +478,7 @@ public class DistributedLinkResourceStore implements LinkResourceStore { | ... | @@ -486,7 +478,7 @@ public class DistributedLinkResourceStore implements LinkResourceStore { |
| 486 | private String toLinkDbKey(LinkKey linkid) { | 478 | private String toLinkDbKey(LinkKey linkid) { |
| 487 | // introduce cache if necessary | 479 | // introduce cache if necessary |
| 488 | return linkid.toString(); | 480 | return linkid.toString(); |
| 489 | - // TODO: Above is irreversible, if we need reverse conversion | 481 | + // Note: Above is irreversible, if we need reverse conversion |
| 490 | // we may need something like below, due to String only limitation | 482 | // we may need something like below, due to String only limitation |
| 491 | // byte[] bytes = serializer.encode(linkid); | 483 | // byte[] bytes = serializer.encode(linkid); |
| 492 | // StringBuilder builder = new StringBuilder(bytes.length * 4); | 484 | // StringBuilder builder = new StringBuilder(bytes.length * 4); | ... | ... |
| ... | @@ -76,7 +76,6 @@ public class HazelcastLinkResourceStore | ... | @@ -76,7 +76,6 @@ public class HazelcastLinkResourceStore |
| 76 | 76 | ||
| 77 | private final Logger log = getLogger(getClass()); | 77 | private final Logger log = getLogger(getClass()); |
| 78 | 78 | ||
| 79 | - // FIXME: what is the Bandwidth unit? | ||
| 80 | private static final Bandwidth DEFAULT_BANDWIDTH = Bandwidth.valueOf(1_000); | 79 | private static final Bandwidth DEFAULT_BANDWIDTH = Bandwidth.valueOf(1_000); |
| 81 | 80 | ||
| 82 | private static final Bandwidth EMPTY_BW = Bandwidth.valueOf(0); | 81 | private static final Bandwidth EMPTY_BW = Bandwidth.valueOf(0); |
| ... | @@ -134,7 +133,6 @@ public class HazelcastLinkResourceStore | ... | @@ -134,7 +133,6 @@ public class HazelcastLinkResourceStore |
| 134 | } | 133 | } |
| 135 | 134 | ||
| 136 | private Set<? extends ResourceAllocation> getResourceCapacity(ResourceType type, Link link) { | 135 | private Set<? extends ResourceAllocation> getResourceCapacity(ResourceType type, Link link) { |
| 137 | - // TODO: plugin/provider mechanism to add resource type in the future? | ||
| 138 | if (type == ResourceType.BANDWIDTH) { | 136 | if (type == ResourceType.BANDWIDTH) { |
| 139 | return ImmutableSet.of(getBandwidthResourceCapacity(link)); | 137 | return ImmutableSet.of(getBandwidthResourceCapacity(link)); |
| 140 | } | 138 | } |
| ... | @@ -145,7 +143,6 @@ public class HazelcastLinkResourceStore | ... | @@ -145,7 +143,6 @@ public class HazelcastLinkResourceStore |
| 145 | } | 143 | } |
| 146 | 144 | ||
| 147 | private Set<LambdaResourceAllocation> getLambdaResourceCapacity(Link link) { | 145 | private Set<LambdaResourceAllocation> getLambdaResourceCapacity(Link link) { |
| 148 | - // FIXME enumerate all the possible link/port lambdas | ||
| 149 | Set<LambdaResourceAllocation> allocations = new HashSet<>(); | 146 | Set<LambdaResourceAllocation> allocations = new HashSet<>(); |
| 150 | try { | 147 | try { |
| 151 | final int waves = Integer.parseInt(link.annotations().value(wavesAnnotation)); | 148 | final int waves = Integer.parseInt(link.annotations().value(wavesAnnotation)); |
| ... | @@ -335,7 +332,6 @@ public class HazelcastLinkResourceStore | ... | @@ -335,7 +332,6 @@ public class HazelcastLinkResourceStore |
| 335 | double bwLeft = bw.bandwidth().toDouble(); | 332 | double bwLeft = bw.bandwidth().toDouble(); |
| 336 | bwLeft -= ((BandwidthResourceAllocation) req).bandwidth().toDouble(); | 333 | bwLeft -= ((BandwidthResourceAllocation) req).bandwidth().toDouble(); |
| 337 | if (bwLeft < 0) { | 334 | if (bwLeft < 0) { |
| 338 | - // FIXME throw appropriate Exception | ||
| 339 | checkState(bwLeft >= 0, | 335 | checkState(bwLeft >= 0, |
| 340 | "There's no Bandwidth left on %s. %s", | 336 | "There's no Bandwidth left on %s. %s", |
| 341 | link, bwLeft); | 337 | link, bwLeft); |
| ... | @@ -345,7 +341,6 @@ public class HazelcastLinkResourceStore | ... | @@ -345,7 +341,6 @@ public class HazelcastLinkResourceStore |
| 345 | // check if allocation should be accepted | 341 | // check if allocation should be accepted |
| 346 | if (!avail.contains(req)) { | 342 | if (!avail.contains(req)) { |
| 347 | // requested lambda was not available | 343 | // requested lambda was not available |
| 348 | - // FIXME throw appropriate exception | ||
| 349 | checkState(avail.contains(req), | 344 | checkState(avail.contains(req), |
| 350 | "Allocating %s on %s failed", | 345 | "Allocating %s on %s failed", |
| 351 | req, link); | 346 | req, link); |
| ... | @@ -381,7 +376,8 @@ public class HazelcastLinkResourceStore | ... | @@ -381,7 +376,8 @@ public class HazelcastLinkResourceStore |
| 381 | 376 | ||
| 382 | boolean success = false; | 377 | boolean success = false; |
| 383 | do { | 378 | do { |
| 384 | - // TODO: smaller tx unit to lower the chance of collisions? | 379 | + // Note: might want to break it down into smaller tx unit |
| 380 | + // to lower the chance of collisions. | ||
| 385 | TransactionContext tx = theInstance.newTransactionContext(); | 381 | TransactionContext tx = theInstance.newTransactionContext(); |
| 386 | tx.beginTransaction(); | 382 | tx.beginTransaction(); |
| 387 | try { | 383 | try { | ... | ... |
| ... | @@ -100,7 +100,7 @@ public class ClusterMessagingProtocol | ... | @@ -100,7 +100,7 @@ public class ClusterMessagingProtocol |
| 100 | // for snapshot | 100 | // for snapshot |
| 101 | .register(State.class) | 101 | .register(State.class) |
| 102 | .register(TableMetadata.class) | 102 | .register(TableMetadata.class) |
| 103 | - // TODO: Move this out ? | 103 | + // TODO: Move this out to API? |
| 104 | .register(TableModificationEvent.class) | 104 | .register(TableModificationEvent.class) |
| 105 | .register(TableModificationEvent.Type.class) | 105 | .register(TableModificationEvent.Type.class) |
| 106 | .build(); | 106 | .build(); | ... | ... |
| ... | @@ -96,13 +96,11 @@ public class DistributedLockManager implements LockService { | ... | @@ -96,13 +96,11 @@ public class DistributedLockManager implements LockService { |
| 96 | 96 | ||
| 97 | @Override | 97 | @Override |
| 98 | public void addListener(LockEventListener listener) { | 98 | public void addListener(LockEventListener listener) { |
| 99 | - // FIXME: | ||
| 100 | throw new UnsupportedOperationException(); | 99 | throw new UnsupportedOperationException(); |
| 101 | } | 100 | } |
| 102 | 101 | ||
| 103 | @Override | 102 | @Override |
| 104 | public void removeListener(LockEventListener listener) { | 103 | public void removeListener(LockEventListener listener) { |
| 105 | - // FIXME: | ||
| 106 | throw new UnsupportedOperationException(); | 104 | throw new UnsupportedOperationException(); |
| 107 | } | 105 | } |
| 108 | 106 | ... | ... |
-
Please register or login to post a comment