Skip to content

Commit 7211e81

Browse files
committed
[Fix #3721] Adding traces
1 parent 5d36770 commit 7211e81

File tree

4 files changed

+78
-20
lines changed

4 files changed

+78
-20
lines changed

api/kogito-events-api/src/main/java/org/kie/kogito/event/process/KogitoEventBodySerializationHelper.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -237,10 +237,9 @@ public static void writeInteger(DataOutput out, Integer integer) throws IOExcept
237237
public static Integer readInteger(DataInput in) throws IOException {
238238
SerType type = readType(in);
239239
return type == SerType.NULL ? null : readInt(in, type);
240-
241240
}
242241

243-
private static void writeInt(DataOutput out, int size) throws IOException {
242+
public static void writeInt(DataOutput out, int size) throws IOException {
244243
if (size < Byte.MAX_VALUE) {
245244
writeType(out, SerType.BYTE);
246245
out.writeByte((byte) size);
@@ -253,7 +252,7 @@ private static void writeInt(DataOutput out, int size) throws IOException {
253252
}
254253
}
255254

256-
private static int readInt(DataInput in) throws IOException {
255+
public static int readInt(DataInput in) throws IOException {
257256
SerType type = readType(in);
258257
return readInt(in, type);
259258
}

api/kogito-events-core/src/main/java/org/kie/kogito/event/serializer/MultipleProcessInstanceDataEventDeserializer.java

Lines changed: 38 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828
import java.util.ArrayList;
2929
import java.util.Collection;
3030
import java.util.List;
31+
import java.util.function.Supplier;
3132
import java.util.zip.GZIPInputStream;
3233

3334
import org.kie.kogito.event.process.CloudEventVisitor;
34-
import org.kie.kogito.event.process.KogitoEventBodySerializationHelper;
3535
import org.kie.kogito.event.process.KogitoMarshallEventSupport;
3636
import org.kie.kogito.event.process.MultipleProcessInstanceDataEvent;
3737
import org.kie.kogito.event.process.ProcessInstanceDataEvent;
@@ -45,6 +45,8 @@
4545
import org.kie.kogito.event.process.ProcessInstanceStateEventBody;
4646
import org.kie.kogito.event.process.ProcessInstanceVariableDataEvent;
4747
import org.kie.kogito.event.process.ProcessInstanceVariableEventBody;
48+
import org.slf4j.Logger;
49+
import org.slf4j.LoggerFactory;
4850

4951
import com.fasterxml.jackson.core.JacksonException;
5052
import com.fasterxml.jackson.core.JsonParser;
@@ -56,8 +58,12 @@
5658

5759
import io.cloudevents.SpecVersion;
5860

61+
import static org.kie.kogito.event.process.KogitoEventBodySerializationHelper.readInt;
62+
5963
public class MultipleProcessInstanceDataEventDeserializer extends JsonDeserializer<MultipleProcessInstanceDataEvent> implements ResolvableDeserializer {
6064

65+
private static final Logger logger = LoggerFactory.getLogger(MultipleProcessInstanceDataEventDeserializer.class);
66+
6167
private JsonDeserializer<Object> defaultDeserializer;
6268

6369
public MultipleProcessInstanceDataEventDeserializer(JsonDeserializer<Object> deserializer) {
@@ -101,24 +107,31 @@ private static boolean isCompressed(JsonNode node) {
101107
public static Collection<ProcessInstanceDataEvent<? extends KogitoMarshallEventSupport>> readFromBytes(byte[] binaryValue, boolean compressed) throws IOException {
102108
InputStream wrappedIn = new ByteArrayInputStream(binaryValue);
103109
if (compressed) {
110+
logger.trace("Gzip compressed byte array");
104111
wrappedIn = new GZIPInputStream(wrappedIn);
105112
}
106113
try (DataInputStream in = new DataInputStream(wrappedIn)) {
107-
int size = in.readShort();
114+
int size = readInt(in);
115+
logger.trace("Reading collection of size {}", size);
108116
Collection<ProcessInstanceDataEvent<? extends KogitoMarshallEventSupport>> result = new ArrayList<>(size);
109117
List<ProcessInstanceDataEventExtensionRecord> infos = new ArrayList<>();
110118
while (size-- > 0) {
111119
byte readInfo = in.readByte();
120+
logger.trace("Info ordinal is {}", readInfo);
112121
ProcessInstanceDataEventExtensionRecord info;
113122
if (readInfo == -1) {
114123
info = new ProcessInstanceDataEventExtensionRecord();
115124
info.readEvent(in);
125+
logger.trace("Info readed is {}", info);
116126
infos.add(info);
117127
} else {
118128
info = infos.get(readInfo);
129+
logger.trace("Info cached is {}", info);
119130
}
120131
String type = in.readUTF();
132+
logger.trace("Type is {}", info);
121133
result.add(getCloudEvent(in, type, info));
134+
logger.trace("{} events remaining", size);
122135
}
123136
return result;
124137
}
@@ -127,31 +140,44 @@ public static Collection<ProcessInstanceDataEvent<? extends KogitoMarshallEventS
127140
private static ProcessInstanceDataEvent<? extends KogitoMarshallEventSupport> getCloudEvent(DataInputStream in, String type, ProcessInstanceDataEventExtensionRecord info) throws IOException {
128141
switch (type) {
129142
case ProcessInstanceVariableDataEvent.VAR_TYPE:
130-
ProcessInstanceVariableDataEvent item = buildDataEvent(in, new ProcessInstanceVariableDataEvent(), new ProcessInstanceVariableEventBody(), info);
143+
ProcessInstanceVariableDataEvent item = buildDataEvent(in, new ProcessInstanceVariableDataEvent(), ProcessInstanceVariableEventBody::new, info);
131144
item.setKogitoVariableName(item.getData().getVariableName());
132145
return item;
133146
case ProcessInstanceStateDataEvent.STATE_TYPE:
134-
return buildDataEvent(in, new ProcessInstanceStateDataEvent(), new ProcessInstanceStateEventBody(), info);
147+
return buildDataEvent(in, new ProcessInstanceStateDataEvent(), ProcessInstanceStateEventBody::new, info);
135148
case ProcessInstanceNodeDataEvent.NODE_TYPE:
136-
return buildDataEvent(in, new ProcessInstanceNodeDataEvent(), new ProcessInstanceNodeEventBody(), info);
149+
return buildDataEvent(in, new ProcessInstanceNodeDataEvent(), ProcessInstanceNodeEventBody::new, info);
137150
case ProcessInstanceErrorDataEvent.ERROR_TYPE:
138-
return buildDataEvent(in, new ProcessInstanceErrorDataEvent(), new ProcessInstanceErrorEventBody(), info);
151+
return buildDataEvent(in, new ProcessInstanceErrorDataEvent(), ProcessInstanceErrorEventBody::new, info);
139152
case ProcessInstanceSLADataEvent.SLA_TYPE:
140-
return buildDataEvent(in, new ProcessInstanceSLADataEvent(), new ProcessInstanceSLAEventBody(), info);
153+
return buildDataEvent(in, new ProcessInstanceSLADataEvent(), ProcessInstanceSLAEventBody::new, info);
141154
default:
142155
throw new UnsupportedOperationException("Unrecognized event type " + type);
143156
}
144157
}
145158

146-
private static <T extends ProcessInstanceDataEvent<V>, V extends KogitoMarshallEventSupport & CloudEventVisitor> T buildDataEvent(DataInput in, T cloudEvent, V body,
159+
private static <T extends ProcessInstanceDataEvent<V>, V extends KogitoMarshallEventSupport & CloudEventVisitor> T buildDataEvent(DataInput in, T cloudEvent, Supplier<V> bodySupplier,
147160
ProcessInstanceDataEventExtensionRecord info) throws IOException {
148-
int delta = KogitoEventBodySerializationHelper.readInteger(in);
161+
int delta = readInt(in);
162+
logger.trace("Time delta is {}", delta);
149163
cloudEvent.setTime(info.getTime().plus(delta, ChronoUnit.MILLIS));
150164
KogitoDataEventSerializationHelper.readCloudEventAttrs(in, cloudEvent);
165+
logger.trace("Cloud event before population {}", cloudEvent);
151166
KogitoDataEventSerializationHelper.populateCloudEvent(cloudEvent, info);
152-
body.readEvent(in);
153-
body.visit(cloudEvent);
154-
cloudEvent.setData(body);
167+
logger.trace("Cloud event after population {}", cloudEvent);
168+
169+
boolean isNotNull = in.readBoolean();
170+
if (isNotNull) {
171+
logger.trace("Data is not null");
172+
V body = bodySupplier.get();
173+
body.readEvent(in);
174+
logger.trace("Event body before population {}", body);
175+
body.visit(cloudEvent);
176+
logger.trace("Event body after population {}", body);
177+
cloudEvent.setData(body);
178+
} else {
179+
logger.trace("Data is null");
180+
}
155181
return cloudEvent;
156182
}
157183

api/kogito-events-core/src/main/java/org/kie/kogito/event/serializer/MultipleProcessInstanceDataEventSerializer.java

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,22 @@
2626
import java.util.Map;
2727
import java.util.zip.GZIPOutputStream;
2828

29-
import org.kie.kogito.event.process.KogitoEventBodySerializationHelper;
3029
import org.kie.kogito.event.process.KogitoMarshallEventSupport;
3130
import org.kie.kogito.event.process.MultipleProcessInstanceDataEvent;
3231
import org.kie.kogito.event.process.ProcessInstanceDataEvent;
32+
import org.slf4j.Logger;
33+
import org.slf4j.LoggerFactory;
3334

3435
import com.fasterxml.jackson.core.JsonGenerator;
3536
import com.fasterxml.jackson.databind.JsonSerializer;
3637
import com.fasterxml.jackson.databind.SerializerProvider;
3738

39+
import static org.kie.kogito.event.process.KogitoEventBodySerializationHelper.writeInt;
40+
3841
public class MultipleProcessInstanceDataEventSerializer extends JsonSerializer<MultipleProcessInstanceDataEvent> {
3942

43+
private static final Logger logger = LoggerFactory.getLogger(MultipleProcessInstanceDataEventDeserializer.class);
44+
4045
private JsonSerializer<Object> defaultSerializer;
4146

4247
public MultipleProcessInstanceDataEventSerializer(JsonSerializer<Object> serializer) {
@@ -67,23 +72,42 @@ public void serialize(MultipleProcessInstanceDataEvent value, JsonGenerator gen,
6772
private byte[] dataAsBytes(JsonGenerator gen, Collection<ProcessInstanceDataEvent<? extends KogitoMarshallEventSupport>> data, boolean compress) throws IOException {
6873
ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
6974
try (DataOutputStream out = new DataOutputStream(compress ? new GZIPOutputStream(bytesOut) : bytesOut)) {
70-
out.writeShort(data.size());
75+
logger.trace("Writing size {}", data.size());
76+
writeInt(out, data.size());
7177
Map<String, ProcessInstanceDataEventExtensionRecord> infos = new HashMap<>();
7278
for (ProcessInstanceDataEvent<? extends KogitoMarshallEventSupport> cloudEvent : data) {
79+
7380
String key = cloudEvent.getKogitoProcessInstanceId();
7481
ProcessInstanceDataEventExtensionRecord info = infos.get(key);
7582
if (info == null) {
76-
out.writeByte(-1);
83+
logger.trace("Writing marker byte -1");
84+
out.writeByte((byte) -1);
7785
info = new ProcessInstanceDataEventExtensionRecord(infos.size(), cloudEvent);
86+
logger.trace("Writing info", info);
7887
info.writeEvent(out);
7988
infos.put(key, info);
8089
} else {
90+
logger.trace("Writing marker byte {}", info.getOrdinal());
8191
out.writeByte((byte) info.getOrdinal());
8292
}
93+
logger.trace("Writing type {}", cloudEvent.getType());
8394
out.writeUTF(cloudEvent.getType());
84-
KogitoEventBodySerializationHelper.writeInteger(out, cloudEvent.getTime().compareTo(info.getTime()));
95+
int timeDelta = cloudEvent.getTime().compareTo(info.getTime());
96+
logger.trace("Writing time delta {}", timeDelta);
97+
writeInt(out, timeDelta);
98+
logger.trace("Writing cloud event attrs {}", cloudEvent);
8599
KogitoDataEventSerializationHelper.writeCloudEventAttrs(out, cloudEvent);
86-
cloudEvent.getData().writeEvent(out);
100+
KogitoMarshallEventSupport itemData = cloudEvent.getData();
101+
if (itemData != null) {
102+
logger.trace("Writing data not null boolean");
103+
out.writeBoolean(true);
104+
logger.trace("Writing cloud event body {}", itemData);
105+
itemData.writeEvent(out);
106+
} else {
107+
logger.trace("Writing data null boolean");
108+
out.writeBoolean(false);
109+
}
110+
logger.trace("individual event writing completed");
87111
}
88112
}
89113
return bytesOut.toByteArray();

api/kogito-events-core/src/main/java/org/kie/kogito/event/serializer/ProcessInstanceDataEventExtensionRecord.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,13 @@ public void readEvent(DataInput in) throws IOException {
156156
source = URI.create(in.readUTF());
157157
addons = readUTF(in);
158158
}
159+
160+
@Override
161+
public String toString() {
162+
return "ProcessInstanceDataEventExtensionRecord [id=" + id + ", instanceId=" + instanceId + ", version="
163+
+ version + ", state=" + state + ", type=" + type + ", parentInstanceId=" + parentInstanceId
164+
+ ", rootId=" + rootId + ", rootInstanceId=" + rootInstanceId + ", businessKey=" + businessKey
165+
+ ", identity=" + identity + ", source=" + source + ", time=" + time + ", addons=" + addons + "]";
166+
}
167+
159168
}

0 commit comments

Comments
 (0)