Skip to content

Commit 1632a75

Browse files
committed
Make TaskUpdateRequest, TaskInfo Thrift ready with json fields
1 parent a9a9bae commit 1632a75

34 files changed

+730
-106
lines changed

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -237,12 +237,12 @@
237237
<version>3.6.0</version>
238238
</dependency>
239239

240-
<!-- pull up to the version used in okio-jvm to avoid conlict with okhttp-* -->
241-
<dependency>
240+
<!-- pull up to the version used in okio-jvm to avoid conlict with okhttp-* -->
241+
<dependency>
242242
<groupId>org.jetbrains.kotlin</groupId>
243243
<artifactId>kotlin-stdlib-jdk8</artifactId>
244244
<version>1.9.10</version>
245-
</dependency>
245+
</dependency>
246246

247247
<dependency>
248248
<groupId>org.eclipse.jetty</groupId>

presto-common/src/main/java/com/facebook/presto/common/transaction/TransactionId.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,24 @@
2323
import java.util.UUID;
2424

2525
import static java.util.Objects.requireNonNull;
26+
import static java.util.UUID.fromString;
2627

2728
@ThriftStruct
2829
public final class TransactionId
2930
{
3031
private final UUID uuid;
3132

32-
@ThriftConstructor
3333
public TransactionId(UUID uuid)
3434
{
3535
this.uuid = requireNonNull(uuid, "uuid is null");
3636
}
3737

38+
@ThriftConstructor
39+
public TransactionId(String uuid)
40+
{
41+
this(fromString(uuid));
42+
}
43+
3844
public static TransactionId create()
3945
{
4046
return new TransactionId(UUID.randomUUID());
@@ -43,7 +49,7 @@ public static TransactionId create()
4349
@JsonCreator
4450
public static TransactionId valueOf(String value)
4551
{
46-
return new TransactionId(UUID.fromString(value));
52+
return new TransactionId(fromString(value));
4753
}
4854

4955
@Override
@@ -67,12 +73,12 @@ public boolean equals(Object obj)
6773

6874
@Override
6975
@JsonValue
76+
@ThriftField(value = 1, name = "uuid")
7077
public String toString()
7178
{
7279
return uuid.toString();
7380
}
7481

75-
@ThriftField(value = 1, name = "uuid")
7682
public UUID getUuid()
7783
{
7884
return uuid;

presto-common/src/main/java/com/facebook/presto/common/type/TypeSignature.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ public TypeSignature(String base, List<TypeSignatureParameter> parameters)
101101
this(TypeSignatureBase.of(base), parameters);
102102
}
103103

104-
@ThriftConstructor
105104
public TypeSignature(TypeSignatureBase typeSignatureBase, List<TypeSignatureParameter> parameters)
106105
{
107106
this.base = typeSignatureBase;
@@ -111,12 +110,18 @@ public TypeSignature(TypeSignatureBase typeSignatureBase, List<TypeSignaturePara
111110
this.calculated = parameters.stream().anyMatch(TypeSignatureParameter::isCalculated);
112111
}
113112

113+
// Add a ignore field to avoid construct conflict
114+
@ThriftConstructor
115+
public TypeSignature(String signature, boolean ignore)
116+
{
117+
this(parseTypeSignature(signature).getTypeSignatureBase(), parseTypeSignature(signature).getParameters());
118+
}
119+
114120
public TypeSignature getStandardTypeSignature()
115121
{
116122
return new TypeSignature(base.getStandardTypeBase(), parameters);
117123
}
118124

119-
@ThriftField(1)
120125
public TypeSignatureBase getTypeSignatureBase()
121126
{
122127
return base;
@@ -127,7 +132,6 @@ public String getBase()
127132
return base.toString();
128133
}
129134

130-
@ThriftField(2)
131135
public List<TypeSignatureParameter> getParameters()
132136
{
133137
return parameters;
@@ -700,6 +704,7 @@ private static boolean isValidStartOfIdentifier(char c)
700704

701705
@Override
702706
@JsonValue
707+
@ThriftField(value = 1, name = "signature")
703708
public String toString()
704709
{
705710
String baseString = base.toString();
@@ -723,6 +728,12 @@ public String toString()
723728
return typeName.toString();
724729
}
725730

731+
@ThriftField(2)
732+
public boolean getIgnore()
733+
{
734+
return true;
735+
}
736+
726737
private static void checkArgument(boolean argument, String format, Object... args)
727738
{
728739
if (!argument) {

presto-common/src/main/java/com/facebook/presto/common/type/TypeSignatureParameterUnion.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import java.util.Objects;
2323

24-
import static com.facebook.drift.annotations.ThriftField.Requiredness.OPTIONAL;
2524
import static com.facebook.presto.common.type.BigintEnumType.LongEnumMap;
2625
import static com.facebook.presto.common.type.ParameterKind.DISTINCT_TYPE;
2726
import static com.facebook.presto.common.type.ParameterKind.LONG;
@@ -50,7 +49,7 @@ public TypeSignatureParameterUnion(TypeSignature typeSignature)
5049
this.id = (short) TYPE.getValue();
5150
}
5251

53-
@ThriftField(value = 1, requiredness = OPTIONAL)
52+
@ThriftField(1)
5453
public TypeSignature getTypeSignature()
5554
{
5655
return typeSignature;
@@ -63,19 +62,20 @@ public TypeSignatureParameterUnion(NamedTypeSignature namedTypeSignature)
6362
this.id = (short) NAMED_TYPE.getValue();
6463
}
6564

66-
@ThriftField(value = 2, requiredness = OPTIONAL)
65+
@ThriftField(2)
6766
public NamedTypeSignature getNamedTypeSignature()
6867
{
6968
return namedTypeSignature;
7069
}
70+
7171
@ThriftConstructor
7272
public TypeSignatureParameterUnion(Long longLiteral)
7373
{
7474
this.longLiteral = longLiteral;
7575
this.id = (short) LONG.getValue();
7676
}
7777

78-
@ThriftField(value = 3, requiredness = OPTIONAL)
78+
@ThriftField(3)
7979
public Long getLongLiteral()
8080
{
8181
return longLiteral;
@@ -88,7 +88,7 @@ public TypeSignatureParameterUnion(String variable)
8888
this.id = (short) VARIABLE.getValue();
8989
}
9090

91-
@ThriftField(value = 4, requiredness = OPTIONAL)
91+
@ThriftField(4)
9292
public String getVariable()
9393
{
9494
return variable;
@@ -101,7 +101,7 @@ public TypeSignatureParameterUnion(LongEnumMap longEnumMap)
101101
this.id = (short) LONG_ENUM.getValue();
102102
}
103103

104-
@ThriftField(value = 5, requiredness = OPTIONAL)
104+
@ThriftField(5)
105105
public LongEnumMap getLongEnumMap()
106106
{
107107
return longEnumMap;
@@ -114,7 +114,7 @@ public TypeSignatureParameterUnion(VarcharEnumMap varcharEnumMap)
114114
this.id = (short) VARCHAR_ENUM.getValue();
115115
}
116116

117-
@ThriftField(value = 6, requiredness = OPTIONAL)
117+
@ThriftField(6)
118118
public VarcharEnumMap getVarcharEnumMap()
119119
{
120120
return varcharEnumMap;
@@ -127,7 +127,7 @@ public TypeSignatureParameterUnion(DistinctTypeInfo distinctTypeInfo)
127127
this.id = (short) DISTINCT_TYPE.getValue();
128128
}
129129

130-
@ThriftField(value = 7, requiredness = OPTIONAL)
130+
@ThriftField(7)
131131
public DistinctTypeInfo getDistinctTypeInfo()
132132
{
133133
return distinctTypeInfo;

presto-main-base/pom.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,6 @@
302302
<artifactId>jts-core</artifactId>
303303
</dependency>
304304

305-
306305
<dependency>
307306
<groupId>org.apache.datasketches</groupId>
308307
<artifactId>datasketches-memory</artifactId>
@@ -456,6 +455,11 @@
456455
<groupId>io.netty</groupId>
457456
<artifactId>netty-transport</artifactId>
458457
</dependency>
458+
459+
<dependency>
460+
<groupId>com.facebook.airlift</groupId>
461+
<artifactId>http-client</artifactId>
462+
</dependency>
459463
</dependencies>
460464

461465
<build>

presto-main-base/src/main/java/com/facebook/presto/execution/ExecutionFailureInfo.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import com.facebook.drift.annotations.ThriftConstructor;
1717
import com.facebook.drift.annotations.ThriftField;
18+
import com.facebook.drift.annotations.ThriftIdlAnnotation;
1819
import com.facebook.drift.annotations.ThriftStruct;
1920
import com.facebook.presto.client.ErrorLocation;
2021
import com.facebook.presto.client.FailureInfo;
@@ -99,7 +100,8 @@ public String getMessage()
99100

100101
@Nullable
101102
@JsonProperty
102-
@ThriftField(value = 3, isRecursive = TRUE, requiredness = OPTIONAL)
103+
@ThriftField(value = 3, isRecursive = TRUE, requiredness = OPTIONAL, idlAnnotations = {
104+
@ThriftIdlAnnotation(key = "cpp.ref_type", value = "\"shared\"")})
103105
public ExecutionFailureInfo getCause()
104106
{
105107
return cause;

presto-main-base/src/main/java/com/facebook/presto/execution/ScheduledSplit.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,20 @@
1313
*/
1414
package com.facebook.presto.execution;
1515

16+
import com.facebook.drift.annotations.ThriftConstructor;
17+
import com.facebook.drift.annotations.ThriftField;
18+
import com.facebook.drift.annotations.ThriftStruct;
1619
import com.facebook.presto.metadata.Split;
1720
import com.facebook.presto.spi.plan.PlanNodeId;
21+
import com.facebook.presto.util.PrestoJsonObjectMapperUtil;
1822
import com.fasterxml.jackson.annotation.JsonCreator;
1923
import com.fasterxml.jackson.annotation.JsonProperty;
2024
import com.google.common.primitives.Longs;
2125

2226
import static com.google.common.base.MoreObjects.toStringHelper;
2327
import static java.util.Objects.requireNonNull;
2428

29+
@ThriftStruct
2530
public class ScheduledSplit
2631
{
2732
private final long sequenceId;
@@ -39,13 +44,26 @@ public ScheduledSplit(
3944
this.split = requireNonNull(split, "split is null");
4045
}
4146

47+
@ThriftConstructor
48+
public ScheduledSplit(
49+
long sequenceId,
50+
PlanNodeId planNodeId,
51+
byte[] split)
52+
{
53+
this.sequenceId = sequenceId;
54+
this.planNodeId = requireNonNull(planNodeId, "planNodeId is null");
55+
this.split = (Split) PrestoJsonObjectMapperUtil.deserialize(requireNonNull(split, "split is null"), Split.class);
56+
}
57+
4258
@JsonProperty
59+
@ThriftField(1)
4360
public long getSequenceId()
4461
{
4562
return sequenceId;
4663
}
4764

4865
@JsonProperty
66+
@ThriftField(2)
4967
public PlanNodeId getPlanNodeId()
5068
{
5169
return planNodeId;
@@ -57,6 +75,12 @@ public Split getSplit()
5775
return split;
5876
}
5977

78+
@ThriftField(value = 3, name = "split")
79+
public byte[] getJsonSplit()
80+
{
81+
return PrestoJsonObjectMapperUtil.serialize(split);
82+
}
83+
6084
@Override
6185
public int hashCode()
6286
{

presto-main-base/src/main/java/com/facebook/presto/execution/TaskInfo.java

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.facebook.presto.metadata.MetadataUpdates;
2222
import com.facebook.presto.operator.TaskStats;
2323
import com.facebook.presto.spi.plan.PlanNodeId;
24+
import com.facebook.presto.util.PrestoJsonObjectMapperUtil;
2425
import com.fasterxml.jackson.annotation.JsonCreator;
2526
import com.fasterxml.jackson.annotation.JsonProperty;
2627
import com.google.common.collect.ImmutableSet;
@@ -56,7 +57,6 @@ public class TaskInfo
5657
private final String nodeId;
5758

5859
@JsonCreator
59-
@ThriftConstructor
6060
public TaskInfo(
6161
@JsonProperty("taskId") TaskId taskId,
6262
@JsonProperty("taskStatus") TaskStatus taskStatus,
@@ -81,6 +81,31 @@ public TaskInfo(
8181
this.nodeId = requireNonNull(nodeId, "nodeId is null");
8282
}
8383

84+
@ThriftConstructor
85+
public TaskInfo(
86+
TaskId taskId,
87+
TaskStatus taskStatus,
88+
long lastHeartbeatInMillis,
89+
OutputBufferInfo outputBuffers,
90+
Set<PlanNodeId> noMoreSplits,
91+
TaskStats stats,
92+
boolean needsPlan,
93+
byte[] metadataUpdates,
94+
String nodeId)
95+
{
96+
this.taskId = requireNonNull(taskId, "taskId is null");
97+
this.taskStatus = requireNonNull(taskStatus, "taskStatus is null");
98+
checkArgument(lastHeartbeatInMillis >= 0, "lastHeartbeat is negative");
99+
this.lastHeartbeatInMillis = lastHeartbeatInMillis;
100+
this.outputBuffers = requireNonNull(outputBuffers, "outputBuffers is null");
101+
this.noMoreSplits = requireNonNull(noMoreSplits, "noMoreSplits is null");
102+
this.stats = requireNonNull(stats, "stats is null");
103+
104+
this.needsPlan = needsPlan;
105+
this.metadataUpdates = (MetadataUpdates) PrestoJsonObjectMapperUtil.deserialize(requireNonNull(metadataUpdates, "metadataUpdates is null"), MetadataUpdates.class);
106+
this.nodeId = requireNonNull(nodeId, "nodeId is null");
107+
}
108+
84109
@JsonProperty
85110
@ThriftField(1)
86111
public TaskId getTaskId()
@@ -136,12 +161,17 @@ public boolean isNeedsPlan()
136161
}
137162

138163
@JsonProperty
139-
@ThriftField(8)
140164
public MetadataUpdates getMetadataUpdates()
141165
{
142166
return metadataUpdates;
143167
}
144168

169+
@ThriftField(value = 8, name = "metadataUpdates")
170+
public byte[] getJsonMetadataUpdates()
171+
{
172+
return PrestoJsonObjectMapperUtil.serialize(metadataUpdates);
173+
}
174+
145175
@JsonProperty
146176
@ThriftField(9)
147177
public String getNodeId()

0 commit comments

Comments
 (0)