Package org.sdnplatform.sync.internal.version

Examples of org.sdnplatform.sync.internal.version.VectorClock


        IInconsistencyResolver<Versioned<List<String>>> ir =
                new IInconsistencyResolver<Versioned<List<String>>>() {
            @Override
            public List<Versioned<List<String>>>
                    resolveConflicts(List<Versioned<List<String>>> items) {
                VectorClock vc = null;
                List<String> strings = new ArrayList<String>();
                for (Versioned<List<String>> item : items) {
                    if (vc == null)
                        vc = (VectorClock)item.getVersion();
                    else
                        vc = vc.merge((VectorClock)item.getVersion());
                   
                    strings.addAll(item.getValue());
                }
                Versioned<List<String>> v =
                        new Versioned<List<String>>(strings, vc);
View Full Code Here


    }

    @Test
    public void testSerialization() throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        VectorClock clock = getClock(1,2);
        String cs = mapper.writeValueAsString(clock);
        VectorClock reconstructed =
                mapper.readValue(cs, new TypeReference<VectorClock>() {});
        assertEquals(clock, reconstructed);
    }
View Full Code Here

    }

    @Override
    public IVersion put(K key, Versioned<V> versioned)
            throws SyncException {
        VectorClock vc = (VectorClock)versioned.getVersion();

        vc = vc.incremented(syncManager.getLocalNodeId(),
                            System.currentTimeMillis());
        versioned = Versioned.value(versioned.getValue(), vc);

        delegate.put(key, versioned);
        return versioned.getVersion();
View Full Code Here

        List<VectorClock> tombstones = new ArrayList<VectorClock>();
        long now = System.currentTimeMillis();
        // make two passes; first we find tombstones that are old enough.
        for (Versioned<V> v : items) {
            if (v.getValue() == null) {
                VectorClock vc = (VectorClock)v.getVersion();
                if ((vc.getTimestamp() + tombstoneDeletion) < now)
                    tombstones.add(vc);
            }
        }

        // second, if we find a tombstone which is later than every
        // non-tombstone value, then we can delete the key.
        for (VectorClock vc : tombstones) {
            boolean later = true;
            for (Versioned<V> v : items) {
                if (v.getValue() != null) {
                    VectorClock curvc = (VectorClock)v.getVersion();
                    if (!Occurred.AFTER.equals(vc.compare(curvc))) {
                        later = false;
                        break;
                    }
                }
View Full Code Here

public class VectorClockTest {
    @Test
    public void testEqualsAndHashcode() {
        long now = 5555555555L;
        VectorClock one = getClockT(now, 1, 2);
        VectorClock other = getClockT(now, 1, 2);
        assertEquals(one, other);
        assertEquals(one.hashCode(), other.hashCode());
    }
View Full Code Here

     * See gihub issue #25: Incorrect coersion of version to short before
     * passing to ClockEntry constructor
     */
    @Test
    public void testMergeWithLargeVersion() {
        VectorClock clock1 = getClock(1);
        VectorClock clock2 = new VectorClock(Lists.newArrayList(new ClockEntry((short) 1,
                                                                               Short.MAX_VALUE + 1)),
                                             System.currentTimeMillis());
        VectorClock mergedClock = clock1.merge(clock2);
        assertEquals(mergedClock.getMaxVersion(), Short.MAX_VALUE + 1);
    }
View Full Code Here

        if (values == null || values.size() == 0) return true;

        // check whether any of the versions are not older than what we have
        for (VectorClock vc : versions) {
            for (Versioned<byte[]> value : values) {
                VectorClock existingVc = (VectorClock)value.getVersion();
                if (!vc.compare(existingVc).equals(Occurred.BEFORE))
                    return true;
            }
        }
View Full Code Here

    @Override
    public IVersion put(K key, V value) throws SyncException {
        List<IVersion> versions = getVersions(key);
        Versioned<V> versioned;
        if(versions.isEmpty())
            versioned = Versioned.value(value, new VectorClock());
        else if(versions.size() == 1)
            versioned = Versioned.value(value, versions.get(0));
        else {
            versioned = get(key, null);
            if(versioned == null)
                versioned = Versioned.value(value, new VectorClock());
            else
                versioned.setValue(value);
        }
        return put(key, versioned);
    }
View Full Code Here

                value.increment(syncManager.getLocalNodeId(),
                                System.currentTimeMillis());
            } else if (request.isSetValue()) {
                byte[] rvalue = request.getValue();
                List<IVersion> versions = store.getVersions(key);
                VectorClock newclock = new VectorClock();
                for (IVersion v : versions) {
                    newclock = newclock.merge((VectorClock)v);
                }
                newclock = newclock.incremented(syncManager.getLocalNodeId(),
                                                System.currentTimeMillis());
                value = Versioned.value(rvalue, newclock);
            } else {
                throw new SyncException("No value specified for put");
            }
View Full Code Here

        try {
            String storeName = request.getStoreName();
            IStorageEngine<ByteArray, byte[]> store =
                    syncManager.getRawStore(storeName);
            ByteArray key = new ByteArray(request.getKey());
            VectorClock newclock;
            if (request.isSetVersion()) {
                newclock = TProtocolUtil.getVersion(request.getVersion());
            } else {
                newclock = new VectorClock();
                List<IVersion> versions = store.getVersions(key);
                for (IVersion v : versions) {
                    newclock = newclock.merge((VectorClock)v);
                }
            }
            newclock =
                    newclock.incremented(rpcService.syncManager.getLocalNodeId(),
                                         System.currentTimeMillis());
            Versioned<byte[]> value = Versioned.value(null, newclock);
            store.put(key, value);

            DeleteResponseMessage m = new DeleteResponseMessage();
View Full Code Here

TOP

Related Classes of org.sdnplatform.sync.internal.version.VectorClock

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.