mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-25 01:19:02 +00:00
Core: Move helper date formatters over to java time (#32504)
Some classes use internal date formatters, which now can be moved over to java time using the DateFormatters class. The same applies for a few test cases.
This commit is contained in:
parent
21f660d801
commit
018e77cac6
@ -35,6 +35,7 @@ import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.index.shard.ShardId;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.Instant;
|
||||
import java.util.Locale;
|
||||
|
||||
import static org.elasticsearch.cluster.routing.allocation.AbstractAllocationDecision.discoveryNodeToXContent;
|
||||
@ -189,7 +190,8 @@ public final class ClusterAllocationExplanation implements ToXContentObject, Wri
|
||||
|
||||
builder.startObject("unassigned_info");
|
||||
builder.field("reason", unassignedInfo.getReason());
|
||||
builder.field("at", UnassignedInfo.DATE_TIME_FORMATTER.printer().print(unassignedInfo.getUnassignedTimeInMillis()));
|
||||
builder.field("at",
|
||||
UnassignedInfo.DATE_TIME_FORMATTER.format(Instant.ofEpochMilli(unassignedInfo.getUnassignedTimeInMillis())));
|
||||
if (unassignedInfo.getNumFailedAllocations() > 0) {
|
||||
builder.field("failed_allocation_attempts", unassignedInfo.getNumFailedAllocations());
|
||||
}
|
||||
|
@ -26,9 +26,10 @@ import org.elasticsearch.common.ParseField;
|
||||
import org.elasticsearch.common.io.stream.StreamInput;
|
||||
import org.elasticsearch.common.io.stream.StreamOutput;
|
||||
import org.elasticsearch.common.io.stream.Writeable;
|
||||
import org.elasticsearch.common.joda.Joda;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.time.CompoundDateTimeFormatter;
|
||||
import org.elasticsearch.common.time.DateFormatters;
|
||||
import org.elasticsearch.common.xcontent.ContextParser;
|
||||
import org.elasticsearch.common.xcontent.ObjectParser;
|
||||
import org.elasticsearch.common.xcontent.ToXContentObject;
|
||||
@ -37,6 +38,8 @@ import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.index.Index;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
@ -365,6 +368,9 @@ public final class IndexGraveyard implements MetaData.Custom {
|
||||
TOMBSTONE_PARSER.declareString((b, s) -> {}, new ParseField(DELETE_DATE_KEY));
|
||||
}
|
||||
|
||||
static final CompoundDateTimeFormatter FORMATTER =
|
||||
DateFormatters.forPattern("strict_date_optional_time").withZone(ZoneOffset.UTC);
|
||||
|
||||
static ContextParser<Void, Tombstone> getParser() {
|
||||
return (parser, context) -> TOMBSTONE_PARSER.apply(parser, null).build();
|
||||
}
|
||||
@ -428,7 +434,8 @@ public final class IndexGraveyard implements MetaData.Custom {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "[index=" + index + ", deleteDate=" + Joda.getStrictStandardDateFormatter().printer().print(deleteDateInMillis) + "]";
|
||||
String date = FORMATTER.format(Instant.ofEpochMilli(deleteDateInMillis));
|
||||
return "[index=" + index + ", deleteDate=" + date + "]";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -28,17 +28,18 @@ import org.elasticsearch.common.Nullable;
|
||||
import org.elasticsearch.common.io.stream.StreamInput;
|
||||
import org.elasticsearch.common.io.stream.StreamOutput;
|
||||
import org.elasticsearch.common.io.stream.Writeable;
|
||||
import org.elasticsearch.common.joda.FormatDateTimeFormatter;
|
||||
import org.elasticsearch.common.joda.Joda;
|
||||
import org.elasticsearch.common.settings.Setting;
|
||||
import org.elasticsearch.common.settings.Setting.Property;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.time.CompoundDateTimeFormatter;
|
||||
import org.elasticsearch.common.time.DateFormatters;
|
||||
import org.elasticsearch.common.unit.TimeValue;
|
||||
import org.elasticsearch.common.xcontent.ToXContent.Params;
|
||||
import org.elasticsearch.common.xcontent.ToXContentFragment;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
@ -47,7 +48,8 @@ import java.util.Objects;
|
||||
*/
|
||||
public final class UnassignedInfo implements ToXContentFragment, Writeable {
|
||||
|
||||
public static final FormatDateTimeFormatter DATE_TIME_FORMATTER = Joda.forPattern("dateOptionalTime");
|
||||
public static final CompoundDateTimeFormatter DATE_TIME_FORMATTER =
|
||||
DateFormatters.forPattern("dateOptionalTime").withZone(ZoneOffset.UTC);
|
||||
|
||||
public static final Setting<TimeValue> INDEX_DELAYED_NODE_LEFT_TIMEOUT_SETTING =
|
||||
Setting.positiveTimeSetting("index.unassigned.node_left.delayed_timeout", TimeValue.timeValueMinutes(1), Property.Dynamic,
|
||||
@ -409,7 +411,7 @@ public final class UnassignedInfo implements ToXContentFragment, Writeable {
|
||||
public String shortSummary() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("[reason=").append(reason).append("]");
|
||||
sb.append(", at[").append(DATE_TIME_FORMATTER.printer().print(unassignedTimeMillis)).append("]");
|
||||
sb.append(", at[").append(DATE_TIME_FORMATTER.format(Instant.ofEpochMilli(unassignedTimeMillis))).append("]");
|
||||
if (failedAllocations > 0) {
|
||||
sb.append(", failed_attempts[").append(failedAllocations).append("]");
|
||||
}
|
||||
@ -432,7 +434,7 @@ public final class UnassignedInfo implements ToXContentFragment, Writeable {
|
||||
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
||||
builder.startObject("unassigned_info");
|
||||
builder.field("reason", reason);
|
||||
builder.field("at", DATE_TIME_FORMATTER.printer().print(unassignedTimeMillis));
|
||||
builder.field("at", DATE_TIME_FORMATTER.format(Instant.ofEpochMilli(unassignedTimeMillis)));
|
||||
if (failedAllocations > 0) {
|
||||
builder.field("failed_attempts", failedAllocations);
|
||||
}
|
||||
|
@ -19,9 +19,11 @@
|
||||
|
||||
package org.elasticsearch.common;
|
||||
|
||||
import org.joda.time.format.DateTimeFormat;
|
||||
import org.joda.time.format.DateTimeFormatter;
|
||||
import org.elasticsearch.common.time.CompoundDateTimeFormatter;
|
||||
import org.elasticsearch.common.time.DateFormatters;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@ -83,7 +85,7 @@ public class Table {
|
||||
return this;
|
||||
}
|
||||
|
||||
private DateTimeFormatter dateFormat = DateTimeFormat.forPattern("HH:mm:ss");
|
||||
private static final CompoundDateTimeFormatter FORMATTER = DateFormatters.forPattern("HH:mm:ss").withZone(ZoneOffset.UTC);
|
||||
|
||||
public Table startRow() {
|
||||
if (headers.isEmpty()) {
|
||||
@ -93,7 +95,7 @@ public class Table {
|
||||
if (withTime) {
|
||||
long time = System.currentTimeMillis();
|
||||
addCell(TimeUnit.SECONDS.convert(time, TimeUnit.MILLISECONDS));
|
||||
addCell(dateFormat.print(time));
|
||||
addCell(FORMATTER.format(Instant.ofEpochMilli(time)));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestActionListener;
|
||||
import org.elasticsearch.rest.action.RestResponseListener;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Locale;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
@ -230,7 +231,8 @@ public class RestShardsAction extends AbstractCatAction {
|
||||
|
||||
if (shard.unassignedInfo() != null) {
|
||||
table.addCell(shard.unassignedInfo().getReason());
|
||||
table.addCell(UnassignedInfo.DATE_TIME_FORMATTER.printer().print(shard.unassignedInfo().getUnassignedTimeInMillis()));
|
||||
Instant unassignedTime = Instant.ofEpochMilli(shard.unassignedInfo().getUnassignedTimeInMillis());
|
||||
table.addCell(UnassignedInfo.DATE_TIME_FORMATTER.format(unassignedTime));
|
||||
table.addCell(TimeValue.timeValueMillis(System.currentTimeMillis() - shard.unassignedInfo().getUnassignedTimeInMillis()));
|
||||
table.addCell(shard.unassignedInfo().getDetails());
|
||||
} else {
|
||||
|
@ -25,6 +25,8 @@ import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsResponse
|
||||
import org.elasticsearch.client.node.NodeClient;
|
||||
import org.elasticsearch.common.Table;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.time.CompoundDateTimeFormatter;
|
||||
import org.elasticsearch.common.time.DateFormatters;
|
||||
import org.elasticsearch.common.unit.TimeValue;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
@ -32,9 +34,9 @@ import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestResponseListener;
|
||||
import org.elasticsearch.snapshots.SnapshotInfo;
|
||||
import org.elasticsearch.snapshots.SnapshotState;
|
||||
import org.joda.time.format.DateTimeFormat;
|
||||
import org.joda.time.format.DateTimeFormatter;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.elasticsearch.rest.RestRequest.Method.GET;
|
||||
@ -97,7 +99,7 @@ public class RestSnapshotAction extends AbstractCatAction {
|
||||
.endHeaders();
|
||||
}
|
||||
|
||||
private DateTimeFormatter dateFormat = DateTimeFormat.forPattern("HH:mm:ss");
|
||||
private static final CompoundDateTimeFormatter FORMATTER = DateFormatters.forPattern("HH:mm:ss").withZone(ZoneOffset.UTC);
|
||||
|
||||
private Table buildTable(RestRequest req, GetSnapshotsResponse getSnapshotsResponse) {
|
||||
Table table = getTableWithHeader(req);
|
||||
@ -107,9 +109,9 @@ public class RestSnapshotAction extends AbstractCatAction {
|
||||
table.addCell(snapshotStatus.snapshotId().getName());
|
||||
table.addCell(snapshotStatus.state());
|
||||
table.addCell(TimeUnit.SECONDS.convert(snapshotStatus.startTime(), TimeUnit.MILLISECONDS));
|
||||
table.addCell(dateFormat.print(snapshotStatus.startTime()));
|
||||
table.addCell(FORMATTER.format(Instant.ofEpochMilli(snapshotStatus.startTime())));
|
||||
table.addCell(TimeUnit.SECONDS.convert(snapshotStatus.endTime(), TimeUnit.MILLISECONDS));
|
||||
table.addCell(dateFormat.print(snapshotStatus.endTime()));
|
||||
table.addCell(FORMATTER.format(Instant.ofEpochMilli(snapshotStatus.endTime())));
|
||||
final long durationMillis;
|
||||
if (snapshotStatus.state() == SnapshotState.IN_PROGRESS) {
|
||||
durationMillis = System.currentTimeMillis() - snapshotStatus.startTime();
|
||||
|
@ -27,17 +27,20 @@ import org.elasticsearch.cluster.node.DiscoveryNodes;
|
||||
import org.elasticsearch.common.Strings;
|
||||
import org.elasticsearch.common.Table;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.time.CompoundDateTimeFormatter;
|
||||
import org.elasticsearch.common.time.DateFormatters;
|
||||
import org.elasticsearch.common.unit.TimeValue;
|
||||
import org.elasticsearch.rest.RestController;
|
||||
import org.elasticsearch.rest.RestRequest;
|
||||
import org.elasticsearch.rest.RestResponse;
|
||||
import org.elasticsearch.rest.action.RestResponseListener;
|
||||
import org.elasticsearch.tasks.TaskInfo;
|
||||
import org.joda.time.format.DateTimeFormat;
|
||||
import org.joda.time.format.DateTimeFormatter;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@ -122,7 +125,7 @@ public class RestTasksAction extends AbstractCatAction {
|
||||
return table;
|
||||
}
|
||||
|
||||
private DateTimeFormatter dateFormat = DateTimeFormat.forPattern("HH:mm:ss");
|
||||
private static final CompoundDateTimeFormatter FORMATTER = DateFormatters.forPattern("HH:mm:ss").withZone(ZoneOffset.UTC);
|
||||
|
||||
private void buildRow(Table table, boolean fullId, boolean detailed, DiscoveryNodes discoveryNodes, TaskInfo taskInfo) {
|
||||
table.startRow();
|
||||
@ -139,7 +142,7 @@ public class RestTasksAction extends AbstractCatAction {
|
||||
}
|
||||
table.addCell(taskInfo.getType());
|
||||
table.addCell(taskInfo.getStartTime());
|
||||
table.addCell(dateFormat.print(taskInfo.getStartTime()));
|
||||
table.addCell(FORMATTER.format(Instant.ofEpochMilli(taskInfo.getStartTime())));
|
||||
table.addCell(taskInfo.getRunningTimeNanos());
|
||||
table.addCell(TimeValue.timeValueNanos(taskInfo.getRunningTimeNanos()).toString());
|
||||
|
||||
@ -159,7 +162,7 @@ public class RestTasksAction extends AbstractCatAction {
|
||||
private void buildGroups(Table table, boolean fullId, boolean detailed, List<TaskGroup> taskGroups) {
|
||||
DiscoveryNodes discoveryNodes = nodesInCluster.get();
|
||||
List<TaskGroup> sortedGroups = new ArrayList<>(taskGroups);
|
||||
sortedGroups.sort((o1, o2) -> Long.compare(o1.getTaskInfo().getStartTime(), o2.getTaskInfo().getStartTime()));
|
||||
sortedGroups.sort(Comparator.comparingLong(o -> o.getTaskInfo().getStartTime()));
|
||||
for (TaskGroup taskGroup : sortedGroups) {
|
||||
buildRow(table, fullId, detailed, discoveryNodes, taskGroup.getTaskInfo());
|
||||
buildGroups(table, fullId, detailed, taskGroup.getChildTasks());
|
||||
|
@ -26,8 +26,8 @@ import org.apache.lucene.index.DirectoryReader;
|
||||
import org.apache.lucene.index.IndexReader;
|
||||
import org.apache.lucene.index.IndexWriter;
|
||||
import org.apache.lucene.store.Directory;
|
||||
import org.elasticsearch.common.joda.FormatDateTimeFormatter;
|
||||
import org.elasticsearch.common.joda.Joda;
|
||||
import org.elasticsearch.common.time.CompoundDateTimeFormatter;
|
||||
import org.elasticsearch.common.time.DateFormatters;
|
||||
import org.elasticsearch.index.query.QueryShardContext;
|
||||
import org.elasticsearch.search.aggregations.BaseAggregationTestCase;
|
||||
import org.elasticsearch.search.aggregations.BucketOrder;
|
||||
@ -137,17 +137,20 @@ public class DateHistogramTests extends BaseAggregationTestCase<DateHistogramAgg
|
||||
}
|
||||
|
||||
public void testRewriteTimeZone() throws IOException {
|
||||
FormatDateTimeFormatter format = Joda.forPattern("strict_date_optional_time");
|
||||
CompoundDateTimeFormatter format = DateFormatters.forPattern("strict_date_optional_time");
|
||||
|
||||
try (Directory dir = newDirectory();
|
||||
IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) {
|
||||
|
||||
w.addDocument(documentForDate(DATE_FIELD_NAME, format.parser().parseDateTime("2018-03-11T11:55:00").getMillis()));
|
||||
w.addDocument(documentForDate(DATE_FIELD_NAME, format.parser().parseDateTime("2017-10-30T18:13:00").getMillis()));
|
||||
long millis1 = DateFormatters.toZonedDateTime(format.parse("2018-03-11T11:55:00")).toInstant().toEpochMilli();
|
||||
w.addDocument(documentForDate(DATE_FIELD_NAME, millis1));
|
||||
long millis2 = DateFormatters.toZonedDateTime(format.parse("2017-10-30T18:13:00")).toInstant().toEpochMilli();
|
||||
w.addDocument(documentForDate(DATE_FIELD_NAME, millis2));
|
||||
|
||||
try (IndexReader readerThatDoesntCross = DirectoryReader.open(w)) {
|
||||
|
||||
w.addDocument(documentForDate(DATE_FIELD_NAME, format.parser().parseDateTime("2018-03-25T02:44:00").getMillis()));
|
||||
long millis3 = DateFormatters.toZonedDateTime(format.parse("2018-03-25T02:44:00")).toInstant().toEpochMilli();
|
||||
w.addDocument(documentForDate(DATE_FIELD_NAME, millis3));
|
||||
|
||||
try (IndexReader readerThatCrosses = DirectoryReader.open(w)) {
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user