public static boolean hasOpenDelta(Domain domain) throws IOException { return getLatestVersion(domain) != null && !allDeltasComplete(getLatestDelta(domain), domain); }
public static void cleanDomains(Collection<Domain> domains, StorageEngine.RemoteLocation dataLocation) throws IOException { cleanDomains(domains, true, dataLocation); }
public static boolean hasOpenDeltaAfterLastValidBase(Domain domain) throws IOException { final DomainVersion latestVersion = getLatestVersion(domain); if (isCompleteToBase(latestVersion, domain)) { return false; } else { return hasOpenDelta(domain); } }
public static Optional<DomainVersion> getLatestOpenDeltaIfExists(Domain domain) throws IOException { final DomainVersion latestDelta = getLatestDelta(domain); return hasOpenDelta(domain) ? Optional.fromNullable(latestDelta) : Optional.<DomainVersion>absent(); }
public static void fastForwardDomains(DomainGroup domainGroup, Collection<Domain> domains) throws IOException { Map<Domain, Integer> domainVersions = new HashMap<Domain, Integer>(); for (Domain domain : domains) { domainVersions.put(domain, Domains.getLatestVersionNotOpenNotDefunct(domain).getVersionNumber()); } domainGroup.mergeDomainVersions(domainVersions); }
private static boolean allDeltasComplete(DomainVersion version, Domain domain) throws IOException { if(version == null){ return true; } if (isBase(version)) { return true; } if (!DomainVersions.isClosed(version)) { return false; } IncrementalDomainVersionProperties properties = (IncrementalDomainVersionProperties)version.getProperties(); return allDeltasComplete( domain.getVersion(properties.getParentVersionNumber()), domain ); }
private static boolean isCompleteToBase(DomainVersion version, Domain domain) throws IOException { if(version == null){ return true; } if (!DomainVersions.isClosed(version)) { return false; } if (isBase(version)) { return !version.isDefunct(); } // TODO is there ever going to be a different impl of props? IncrementalDomainVersionProperties properties = (IncrementalDomainVersionProperties)version.getProperties(); return isCompleteToBase( domain.getVersion(properties.getParentVersionNumber()), domain ); }
public Delta(Domain domain, String source) throws IOException { this(Domains.getLatestVersion(domain), source); }
public static DomainVersion getLatestDelta(Domain domain) throws IOException { SortedSet<DomainVersion> versions = domain.getVersions(); if (versions == null || versions.size() == 0) { return null; } else { ArrayList<DomainVersion> list = Lists.newArrayList(versions); Collections.reverse(list); for (DomainVersion version : list) { if(!isBase(version)){ return version; } } return null; } }
public static DomainVersion getLatestVersionNotOpenNotDefunct(Domain domain) throws IOException { Set<DomainVersion> originalVersions = domain.getVersions(); if (originalVersions == null || originalVersions.size() == 0) { return null; } SortedSet<DomainVersion> versions = new TreeSet<DomainVersion>(new ReverseComparator<DomainVersion>()); versions.addAll(originalVersions); for (DomainVersion version : versions) { if (isCompleteToBase(version, domain)) { return version; } } return null; }
public static void fastForwardDomain(DomainGroup domainGroup, Domain domain) throws IOException { DomainVersion version = Domains.getLatestVersionNotOpenNotDefunct(domain); domainGroup.setDomainVersion(domain, version.getVersionNumber()); }
protected void addDomainsToRingGroup(Coordinator coordinator, RingGroup ringGroup) throws IOException { // for each configured domain for (RingGroupConfiguredDomain configuredDomain : configuredDomains) { Domain domain = coordinator.getDomain(configuredDomain.getName()); DomainAndVersion version = ringGroup.getDomainGroup().getDomainVersion(domain); if (version == null) { // either there are no versions, which is fine DomainVersion latestClosedVersion = Domains.getLatestVersionNotOpenNotDefunct(domain); if (latestClosedVersion != null) { int versionToAdd = latestClosedVersion.getVersionNumber(); LOG.info("Adding domain " + domain.getName() + " version " + versionToAdd + " to domain group: " + ringGroup.getName()); ringGroup.getDomainGroup().setDomainVersion(domain, versionToAdd); } } } }