Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@

import java.net.URI;
import java.nio.ByteBuffer;
import java.time.OffsetDateTime;
import java.time.Instant;
import java.util.Collection;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -341,7 +341,7 @@ public static void setResourceSelfLink(Resource resource, String selfLink) {
}

@Warning(value = INTERNAL_USE_ONLY_WARNING)
public static void setTimestamp(Resource resource, OffsetDateTime date) {
public static void setTimestamp(Resource resource, Instant date) {
ModelBridgeInternal.setTimestamp(resource, date);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import com.azure.cosmos.implementation.RxDocumentServiceRequest;
import com.azure.cosmos.implementation.SerializationDiagnosticsContext;
import com.azure.cosmos.implementation.Utils;
import com.azure.cosmos.implementation.ZonedDateTimeSerializer;
import com.azure.cosmos.implementation.DiagnosticsInstantSerializer;
import com.azure.cosmos.implementation.directconnectivity.DirectBridgeInternal;
import com.azure.cosmos.implementation.directconnectivity.StoreResponse;
import com.azure.cosmos.implementation.directconnectivity.StoreResult;
Expand All @@ -26,9 +26,7 @@
import java.lang.management.ManagementFactory;
import java.net.URI;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.Instant;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
Expand All @@ -54,8 +52,8 @@ class ClientSideRequestStatistics {

private List<URI> contactedReplicas;
private Set<URI> failedReplicas;
private ZonedDateTime requestStartTimeUTC;
private ZonedDateTime requestEndTimeUTC;
private Instant requestStartTimeUTC;
private Instant requestEndTimeUTC;
private Set<URI> regionsContacted;
private RetryContext retryContext;
private GatewayStatistics gatewayStatistics;
Expand All @@ -64,8 +62,8 @@ class ClientSideRequestStatistics {
private SerializationDiagnosticsContext serializationDiagnosticsContext;

ClientSideRequestStatistics() {
this.requestStartTimeUTC = ZonedDateTime.now(ZoneOffset.UTC);
this.requestEndTimeUTC = ZonedDateTime.now(ZoneOffset.UTC);
this.requestStartTimeUTC = Instant.now();
this.requestEndTimeUTC = Instant.now();
this.responseStatisticsList = new ArrayList<>();
this.supplementalResponseStatisticsList = new ArrayList<>();
this.addressResolutionStatistics = new HashMap<>();
Expand All @@ -83,7 +81,7 @@ Duration getDuration() {

void recordResponse(RxDocumentServiceRequest request, StoreResult storeResult) {
Objects.requireNonNull(request, "request is required and cannot be null.");
ZonedDateTime responseTime = ZonedDateTime.now(ZoneOffset.UTC);
Instant responseTime = Instant.now();
connectionMode = ConnectionMode.DIRECT;

StoreResponseStatistics storeResponseStatistics = new StoreResponseStatistics();
Expand Down Expand Up @@ -121,7 +119,7 @@ void recordResponse(RxDocumentServiceRequest request, StoreResult storeResult) {
void recordGatewayResponse(
RxDocumentServiceRequest rxDocumentServiceRequest, StoreResponse storeResponse,
CosmosException exception) {
ZonedDateTime responseTime = ZonedDateTime.now(ZoneOffset.UTC);
Instant responseTime = Instant.now();
connectionMode = ConnectionMode.GATEWAY;
synchronized (this) {
if (responseTime.isAfter(this.requestEndTimeUTC)) {
Expand All @@ -131,7 +129,7 @@ void recordGatewayResponse(
if (rxDocumentServiceRequest != null
&& rxDocumentServiceRequest.requestContext != null
&& rxDocumentServiceRequest.requestContext.retryContext != null) {
rxDocumentServiceRequest.requestContext.retryContext.retryEndTime = ZonedDateTime.now(ZoneOffset.UTC);
rxDocumentServiceRequest.requestContext.retryContext.retryEndTime = Instant.now();
this.retryContext = new RetryContext(rxDocumentServiceRequest.requestContext.retryContext);
}

Expand Down Expand Up @@ -163,9 +161,9 @@ String recordAddressResolutionStart(URI targetEndpoint) {
String identifier = Utils.randomUUID().toString();

AddressResolutionStatistics resolutionStatistics = new AddressResolutionStatistics();
resolutionStatistics.startTime = ZonedDateTime.now(ZoneOffset.UTC);
resolutionStatistics.startTime = Instant.now();
// Very far in the future
resolutionStatistics.endTime = ZonedDateTime.of(LocalDateTime.MAX, ZoneOffset.UTC);
resolutionStatistics.endTime = Instant.MAX;
resolutionStatistics.targetEndpoint = targetEndpoint == null ? "<NULL>" : targetEndpoint.toString();

synchronized (this) {
Expand All @@ -179,7 +177,7 @@ void recordAddressResolutionEnd(String identifier) {
if (StringUtils.isEmpty(identifier)) {
return;
}
ZonedDateTime responseTime = ZonedDateTime.now(ZoneOffset.UTC);
Instant responseTime = Instant.now();

synchronized (this) {
if (!this.addressResolutionStatistics.containsKey(identifier)) {
Expand Down Expand Up @@ -230,16 +228,16 @@ SerializationDiagnosticsContext getSerializationDiagnosticsContext(){

void recordRetryContext(RxDocumentServiceRequest request) {
if(request.requestContext.retryContext != null) {
request.requestContext.retryContext.retryEndTime = ZonedDateTime.now(ZoneOffset.UTC);
request.requestContext.retryContext.retryEndTime = Instant.now();
this.retryContext = new RetryContext(request.requestContext.retryContext);
}
}

static class StoreResponseStatistics {
@JsonSerialize(using = StoreResult.StoreResultSerializer.class)
StoreResult storeResult;
@JsonSerialize(using = ZonedDateTimeSerializer.class)
ZonedDateTime requestResponseTime;
@JsonSerialize(using = DiagnosticsInstantSerializer.class)
Instant requestResponseTime;
ResourceType requestResourceType;
OperationType requestOperationType;
}
Expand Down Expand Up @@ -282,8 +280,8 @@ public void serialize(
generator.writeStartObject();
long requestLatency = statistics.getDuration().toMillis();
generator.writeNumberField("requestLatency", requestLatency);
generator.writeStringField("requestStartTimeUTC", ZonedDateTimeSerializer.formatDateTime(statistics.requestStartTimeUTC));
generator.writeStringField("requestEndTimeUTC", ZonedDateTimeSerializer.formatDateTime(statistics.requestEndTimeUTC));
generator.writeStringField("requestStartTimeUTC", DiagnosticsInstantSerializer.formatDateTime(statistics.requestStartTimeUTC));
generator.writeStringField("requestEndTimeUTC", DiagnosticsInstantSerializer.formatDateTime(statistics.requestEndTimeUTC));
generator.writeObjectField("connectionMode", statistics.connectionMode);
generator.writeObjectField("responseStatisticsList", statistics.responseStatisticsList);
int supplementalResponseStatisticsListCount = statistics.supplementalResponseStatisticsList.size();
Expand Down Expand Up @@ -328,10 +326,10 @@ public void serialize(
}

private static class AddressResolutionStatistics {
@JsonSerialize(using = ZonedDateTimeSerializer.class)
ZonedDateTime startTime;
@JsonSerialize(using = ZonedDateTimeSerializer.class)
ZonedDateTime endTime;
@JsonSerialize(using = DiagnosticsInstantSerializer.class)
Instant startTime;
Comment thread
simplynaveen20 marked this conversation as resolved.
@JsonSerialize(using = DiagnosticsInstantSerializer.class)
Instant endTime;
String targetEndpoint;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import com.azure.cosmos.models.PartitionKey;

import java.time.OffsetDateTime;
import java.time.Instant;
import java.util.Map;

/**
Expand All @@ -15,7 +15,7 @@
public final class ChangeFeedOptions {
private String partitionKeyRangeId;
private boolean startFromBeginning;
private OffsetDateTime startDateTime;
private Instant startDateTime;
private Integer maxItemCount;
private String requestContinuation;
private PartitionKey partitionkey;
Expand Down Expand Up @@ -101,23 +101,23 @@ public ChangeFeedOptions setStartFromBeginning(boolean startFromBeginning) {
}

/**
* Gets the zoned date time to start looking for changes after.
* Gets the instant time to start looking for changes after.
*
* @return a zoned date time to start looking for changes after, if set or null
* @return a instant time to start looking for changes after, if set or null
* otherwise
*/
public OffsetDateTime getStartDateTime() {
public Instant getStartDateTime() {
return startDateTime;
}

/**
* Sets the zoned date time (exclusive) to start looking for changes after. If
* Sets the instant time (exclusive) to start looking for changes after. If
* this is specified, startFromBeginning is ignored.
*
* @param startDateTime a zoned date time to start looking for changes after.
* @param startDateTime a instant time to start looking for changes after.
* @return the ChangeFeedOptions.
*/
public ChangeFeedOptions setStartDateTime(OffsetDateTime startDateTime) {
public ChangeFeedOptions setStartDateTime(Instant startDateTime) {
this.startDateTime = startDateTime;
return this;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.time.ZoneOffset;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiFunction;
Expand Down Expand Up @@ -95,7 +96,7 @@ private RxDocumentServiceRequest createDocumentServiceRequest(String continuatio
}

if(options.getStartDateTime() != null){
String dateTimeInHttpFormat = Utils.zonedDateTimeAsUTCRFC1123(options.getStartDateTime());
String dateTimeInHttpFormat = Utils.zonedDateTimeAsUTCRFC1123(options.getStartDateTime().atOffset(ZoneOffset.UTC));
Comment thread
simplynaveen20 marked this conversation as resolved.
headers.put(HttpConstants.HttpHeaders.IF_MODIFIED_SINCE, dateTimeInHttpFormat);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,35 @@

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.InstantSerializer;

import java.io.IOException;
import java.time.ZonedDateTime;
import java.time.Instant;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class ZonedDateTimeSerializer extends StdSerializer<ZonedDateTime> {
public class DiagnosticsInstantSerializer extends InstantSerializer {

private static final long serialVersionUID = 1477047422582342157L;
private static final DateTimeFormatter RESPONSE_TIME_FORMATTER =
DateTimeFormatter.ofPattern("dd MMM yyyy HH:mm:ss" + ".SSS").withLocale(Locale.US);
DateTimeFormatter.ofPattern("dd MMM yyyy HH:mm:ss" + ".SSS").withLocale(Locale.US).withZone(ZoneOffset.UTC);

public ZonedDateTimeSerializer() {
super(ZonedDateTime.class);
public DiagnosticsInstantSerializer() {
super();
}

@Override
public void serialize(ZonedDateTime zonedDateTime,
public void serialize(Instant instant,
JsonGenerator jsonGenerator,
SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeObject(formatDateTime(zonedDateTime));
jsonGenerator.writeObject(formatDateTime(instant));
}

public static String formatDateTime(ZonedDateTime dateTime) {
public static String formatDateTime(Instant dateTime) {
if (dateTime == null) {
return null;
}
return dateTime.format(RESPONSE_TIME_FORMATTER);
return RESPONSE_TIME_FORMATTER.format(dateTime);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import reactor.core.publisher.Mono;

import java.time.Duration;
import java.time.ZonedDateTime;
import java.time.Instant;
import java.util.List;

// TODO update documentation
Expand Down Expand Up @@ -36,9 +36,9 @@ public interface IRetryPolicy {

Duration getRetryLatency();

ZonedDateTime getStartTime();
Instant getStartTime();

ZonedDateTime getEndTime();
Instant getEndTime();

void addStatusAndSubStatusCode(Integer index, int statusCode, int subStatusCode);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

import java.io.IOException;
import java.time.Duration;
import java.time.ZonedDateTime;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
Expand All @@ -28,11 +28,11 @@ public void addMetaDataDiagnostic(MetadataDiagnostics metaDataDiagnostic) {

@JsonSerialize(using = MetaDataDiagnosticSerializer.class)
public static class MetadataDiagnostics {
public volatile ZonedDateTime startTimeUTC;
public volatile ZonedDateTime endTimeUTC;
public volatile Instant startTimeUTC;
public volatile Instant endTimeUTC;
public volatile MetadataType metaDataName;

public MetadataDiagnostics(ZonedDateTime startTimeUTC, ZonedDateTime endTimeUTC, MetadataType metaDataName) {
public MetadataDiagnostics(Instant startTimeUTC, Instant endTimeUTC, MetadataType metaDataName) {
this.startTimeUTC = startTimeUTC;
this.endTimeUTC = endTimeUTC;
this.metaDataName = metaDataName;
Expand All @@ -54,8 +54,8 @@ public void serialize(MetadataDiagnostics metaDataDiagnostic, JsonGenerator json
Duration.ZERO : Duration.between(metaDataDiagnostic.startTimeUTC, metaDataDiagnostic.endTimeUTC);
jsonGenerator.writeStartObject();
jsonGenerator.writeObjectField("metaDataName", metaDataDiagnostic.metaDataName);
jsonGenerator.writeStringField("startTimeUTC", ZonedDateTimeSerializer.formatDateTime(metaDataDiagnostic.startTimeUTC));
jsonGenerator.writeStringField("endTimeUTC", ZonedDateTimeSerializer.formatDateTime(metaDataDiagnostic.endTimeUTC));
jsonGenerator.writeStringField("startTimeUTC", DiagnosticsInstantSerializer.formatDateTime(metaDataDiagnostic.startTimeUTC));
jsonGenerator.writeStringField("endTimeUTC", DiagnosticsInstantSerializer.formatDateTime(metaDataDiagnostic.endTimeUTC));
if(durationinMS != null) {
jsonGenerator.writeNumberField("durationinMS", durationinMS.toMillis());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import com.azure.cosmos.implementation.guava25.collect.ImmutableList;

import java.time.Duration;
import java.time.OffsetDateTime;
import java.time.Instant;
import java.util.Iterator;

import static com.azure.cosmos.implementation.guava25.base.Preconditions.checkNotNull;
Expand Down Expand Up @@ -163,9 +163,9 @@ public static final class Event {
private final String name;

@JsonSerialize(using = ToStringSerializer.class)
private final OffsetDateTime startTime;
private final Instant startTime;

public Event(final String name, final OffsetDateTime from, final OffsetDateTime to) {
public Event(final String name, final Instant from, final Instant to) {

checkNotNull(name, "expected non-null name");

Expand All @@ -188,7 +188,7 @@ public String getName() {
return name;
}

public OffsetDateTime getStartTime() {
public Instant getStartTime() {
return startTime;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@

import java.nio.ByteBuffer;
import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;

/**
* Represents the base resource in the Azure Cosmos DB database service.
Expand Down Expand Up @@ -167,21 +165,21 @@ public Resource setSelfLink(String selfLink) {
*
* @return the timestamp.
*/
public OffsetDateTime getTimestamp() {
public Instant getTimestamp() {
Long seconds = super.getLong(Constants.Properties.LAST_MODIFIED);
if (seconds == null) {
return null;
}
return OffsetDateTime.ofInstant(Instant.ofEpochSecond(seconds.longValue()), ZoneOffset.UTC);
return Instant.ofEpochSecond(seconds.longValue());
}

/**
* Set the last modified timestamp associated with the resource.
*
* @param timestamp the timestamp.
*/
public Resource setTimestamp(OffsetDateTime timestamp) {
long seconds = timestamp.toEpochSecond();
public Resource setTimestamp(Instant timestamp) {
long seconds = timestamp.getEpochSecond();
super.set(Constants.Properties.LAST_MODIFIED, seconds);
return this;
}
Expand Down
Loading