public void ensureListPartitionExists(String name, String in) { Objects.requireNonNull(name, "Sub-partition's \"name\" must not be null"); Objects.requireNonNull(in, "Sub-partition's \"in\" must not be null"); Preconditions.checkState(this.partitionType == PartitionType.LIST, "ensureRangePartitionExists(String name, String in) can only be called for a LIST partitioned VertexLabel. Found %s", this.partitionType.name()); Optional<Partition> partitionOptional = this.getPartition(name); if (!partitionOptional.isPresent()) { this.getAbstractLabel().getSchema().getTopology().lock(); partitionOptional = this.getPartition(name); partitionOptional.orElseGet(() -> this.createListPartition(name, in)); } else { partitionOptional.get(); } }
public void ensureRangePartitionExists(String name, String from, String to) { Objects.requireNonNull(name, "Sub-partition's \"name\" must not be null"); Objects.requireNonNull(from, "Sub-partition's \"from\" must not be null"); Objects.requireNonNull(to, "Sub-partition's \"to\" must not be null"); Preconditions.checkState(this.partitionType == PartitionType.RANGE, "ensureRangePartitionExists(String name, String from, String to) can only be called for a RANGE partitioned VertexLabel. Found %s", this.partitionType.name()); Optional<Partition> partitionOptional = this.getPartition(name); if (!partitionOptional.isPresent()) { this.getAbstractLabel().getSchema().getTopology().lock(); partitionOptional = this.getPartition(name); partitionOptional.orElseGet(() -> this.createRangePartition(name, from, to)); } else { partitionOptional.get(); } }
public void ensureRangePartitionExists(String name, String from, String to) { Objects.requireNonNull(name, "Sub-partition's \"name\" must not be null"); Objects.requireNonNull(from, "Sub-partition's \"from\" must not be null"); Objects.requireNonNull(to, "Sub-partition's \"to\" must not be null"); Preconditions.checkState(this.partitionType == PartitionType.RANGE, "ensureRangePartitionExists(String name, String from, String to) can only be called for a RANGE partitioned VertexLabel. Found %s", this.partitionType.name()); Optional<Partition> partitionOptional = this.getPartition(name); if (!partitionOptional.isPresent()) { this.getAbstractLabel().getSchema().getTopology().lock(); partitionOptional = this.getPartition(name); partitionOptional.orElseGet(() -> this.createRangePartition(name, from, to)); } else { partitionOptional.get(); } }
public Partition ensureRangePartitionWithSubPartitionExists( String name, String from, String to, PartitionType partitionType, String partitionExpression) { Objects.requireNonNull(name, "Sub-partition's \"name\" must not be null"); Objects.requireNonNull(from, "Sub-partition's \"from\" must not be null"); Objects.requireNonNull(to, "Sub-partition's \"to\" must not be null"); Preconditions.checkState(partitionType != PartitionType.NONE, "ensureRangePartitionWithSubPartitionExists(String name, String from, String to, PartitionType partitionType, String partitionExpression) may not be called with partitionType NONE partition"); Objects.requireNonNull(partitionExpression, "Sub-partition's \"partitionExpression\" must not be null"); Optional<Partition> partitionOptional = this.getPartition(name); if (!partitionOptional.isPresent()) { this.getAbstractLabel().getSchema().getTopology().lock(); partitionOptional = this.getPartition(name); return partitionOptional.orElseGet(() -> this.createRangePartitionWithSubPartition(name, from, to, partitionType, partitionExpression)); } else { return partitionOptional.get(); } }
public void ensureListPartitionExists(String name, String in) { Objects.requireNonNull(name, "Sub-partition's \"name\" must not be null"); Objects.requireNonNull(in, "Sub-partition's \"in\" must not be null"); Preconditions.checkState(this.partitionType == PartitionType.LIST, "ensureRangePartitionExists(String name, String in) can only be called for a LIST partitioned VertexLabel. Found %s", this.partitionType.name()); Optional<Partition> partitionOptional = this.getPartition(name); if (!partitionOptional.isPresent()) { this.getAbstractLabel().getSchema().getTopology().lock(); partitionOptional = this.getPartition(name); partitionOptional.orElseGet(() -> this.createListPartition(name, in)); } else { partitionOptional.get(); } }
public Partition ensureListPartitionWithSubPartitionExists( String name, String in, PartitionType partitionType, String partitionExpression) { Objects.requireNonNull(name, "Sub-partition's \"name\" must not be null"); Objects.requireNonNull(in, "Sub-partition's \"in\" must not be null"); Preconditions.checkState(partitionType == PartitionType.LIST, "ensureListPartitionWithSubPartitionExists(String name, String in, PartitionType partitionType, String partitionExpression) can only be called with a LIST partition. Found %s", partitionType.name()); Objects.requireNonNull(partitionExpression, "Sub-partition's \"partitionExpression\" must not be null"); Optional<Partition> partitionOptional = this.getPartition(name); if (!partitionOptional.isPresent()) { this.getAbstractLabel().getSchema().getTopology().lock(); partitionOptional = this.getPartition(name); return partitionOptional.orElseGet(() -> this.createListPartitionWithSubPartition(name, in, partitionType, partitionExpression)); } else { return partitionOptional.get(); } }
public Partition ensureRangePartitionWithSubPartitionExists( String name, String from, String to, PartitionType partitionType, String partitionExpression) { Objects.requireNonNull(name, "Sub-partition's \"name\" must not be null"); Objects.requireNonNull(from, "Sub-partition's \"from\" must not be null"); Objects.requireNonNull(to, "Sub-partition's \"to\" must not be null"); Preconditions.checkState(partitionType != PartitionType.NONE, "ensureRangePartitionWithSubPartitionExists(String name, String from, String to, PartitionType partitionType, String partitionExpression) may not be called with partitionType NONE partition"); Objects.requireNonNull(partitionExpression, "Sub-partition's \"partitionExpression\" must not be null"); Optional<Partition> partitionOptional = this.getPartition(name); if (!partitionOptional.isPresent()) { this.getAbstractLabel().getSchema().getTopology().lock(); partitionOptional = this.getPartition(name); return partitionOptional.orElseGet(() -> this.createRangePartitionWithSubPartition(name, from, to, partitionType, partitionExpression)); } else { return partitionOptional.get(); } }
public Partition ensureListPartitionWithSubPartitionExists( String name, String in, PartitionType partitionType, String partitionExpression) { Objects.requireNonNull(name, "Sub-partition's \"name\" must not be null"); Objects.requireNonNull(in, "Sub-partition's \"in\" must not be null"); Preconditions.checkState(partitionType == PartitionType.LIST, "ensureListPartitionWithSubPartitionExists(String name, String in, PartitionType partitionType, String partitionExpression) can only be called with a LIST partition. Found %s", partitionType.name()); Objects.requireNonNull(partitionExpression, "Sub-partition's \"partitionExpression\" must not be null"); Optional<Partition> partitionOptional = this.getPartition(name); if (!partitionOptional.isPresent()) { this.getAbstractLabel().getSchema().getTopology().lock(); partitionOptional = this.getPartition(name); return partitionOptional.orElseGet(() -> this.createListPartitionWithSubPartition(name, in, partitionType, partitionExpression)); } else { return partitionOptional.get(); } }
Optional<Partition> p = uncommittedPartition.getPartition(name); if (p.isPresent()) { return p; Optional<Partition> p = partition.getPartition(name); if (p.isPresent()) { return p;
public Optional<Partition> getPartition(String name) { if (getAbstractLabel().getSchema().getTopology().isSqlWriteLockHeldByCurrentThread() && this.uncommittedRemovedPartitions.contains(name)) { return Optional.empty(); } Partition result = null; if (this.getAbstractLabel().getSchema().getTopology().isSqlWriteLockHeldByCurrentThread()) { result = this.uncommittedPartitions.get(name); } if (result == null) { result = this.partitions.get(name); } if (result == null) { for (Partition partition : this.uncommittedPartitions.values()) { Optional<Partition> p = partition.getPartition(name); if (p.isPresent()) { return p; } } for (Partition partition : this.partitions.values()) { Optional<Partition> p = partition.getPartition(name); if (p.isPresent()) { return p; } } } return Optional.ofNullable(result); }
Optional<Partition> p = uncommittedPartition.getPartition(name); if (p.isPresent()) { return p; Optional<Partition> p = partition.getPartition(name); if (p.isPresent()) { return p;
public Optional<Partition> getPartition(String name) { if (getAbstractLabel().getSchema().getTopology().isSqlWriteLockHeldByCurrentThread() && this.uncommittedRemovedPartitions.contains(name)) { return Optional.empty(); } Partition result = null; if (this.getAbstractLabel().getSchema().getTopology().isSqlWriteLockHeldByCurrentThread()) { result = this.uncommittedPartitions.get(name); } if (result == null) { result = this.partitions.get(name); } if (result == null) { for (Partition partition : this.uncommittedPartitions.values()) { Optional<Partition> p = partition.getPartition(name); if (p.isPresent()) { return p; } } for (Partition partition : this.partitions.values()) { Optional<Partition> p = partition.getPartition(name); if (p.isPresent()) { return p; } } } return Optional.ofNullable(result); }
void fromNotifyJson(JsonNode partitionNode, boolean fire) { ArrayNode partitionsNode = (ArrayNode) partitionNode.get("partitions"); if (partitionsNode != null) { for (JsonNode jsonNode : partitionsNode) { Optional<Partition> optionalPartition = getPartition(jsonNode.get("name").asText()); Preconditions.checkState(optionalPartition.isPresent(), "committed partition %s on partition %s must be present", jsonNode.get("name").asText(), this.getName()); Partition committedPartition = optionalPartition.get(); committedPartition.fromNotifyJson(jsonNode, fire); } } ArrayNode uncommittedPartitionsNode = (ArrayNode) partitionNode.get("uncommittedPartitions"); if (uncommittedPartitionsNode != null) { for (JsonNode jsonNode : uncommittedPartitionsNode) { this.fromUncommittedPartitionNotifyJson(jsonNode); } } ArrayNode uncommittedRemovedPartitions = (ArrayNode) partitionNode.get("uncommittedRemovedPartitions"); if (uncommittedRemovedPartitions != null) { for (JsonNode jsonNode : uncommittedRemovedPartitions) { String pName = jsonNode.asText(); Partition old = this.partitions.remove(pName); if (fire && old != null) { this.getAbstractLabel().getSchema().getTopology().fire(old, "", TopologyChangeAction.DELETE); } } } }
void fromNotifyJson(JsonNode partitionNode, boolean fire) { ArrayNode partitionsNode = (ArrayNode) partitionNode.get("partitions"); if (partitionsNode != null) { for (JsonNode jsonNode : partitionsNode) { Optional<Partition> optionalPartition = getPartition(jsonNode.get("name").asText()); Preconditions.checkState(optionalPartition.isPresent(), "committed partition %s on partition %s must be present", jsonNode.get("name").asText(), this.getName()); Partition committedPartition = optionalPartition.get(); committedPartition.fromNotifyJson(jsonNode, fire); } } ArrayNode uncommittedPartitionsNode = (ArrayNode) partitionNode.get("uncommittedPartitions"); if (uncommittedPartitionsNode != null) { for (JsonNode jsonNode : uncommittedPartitionsNode) { this.fromUncommittedPartitionNotifyJson(jsonNode); } } ArrayNode uncommittedRemovedPartitions = (ArrayNode) partitionNode.get("uncommittedRemovedPartitions"); if (uncommittedRemovedPartitions != null) { for (JsonNode jsonNode : uncommittedRemovedPartitions) { String pName = jsonNode.asText(); Partition old = this.partitions.remove(pName); if (fire && old != null) { this.getAbstractLabel().getSchema().getTopology().fire(old, "", TopologyChangeAction.DELETE); } } } }