diff --git a/CHANGELOG.md b/CHANGELOG.md
index dd317720c5..af22580bac 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,21 @@
## [Unreleased](https://github.com/aklivity/zilla/tree/HEAD)
-[Full Changelog](https://github.com/aklivity/zilla/compare/0.9.96...HEAD)
+[Full Changelog](https://github.com/aklivity/zilla/compare/0.9.97...HEAD)
+
+**Fixed bugs:**
+
+- Propagate error code in risingwave binding that's coming either from pgsql-kafka or risingwave [\#1286](https://github.com/aklivity/zilla/issues/1286)
+- Zilla get blocked when sending messages to kafka [\#1268](https://github.com/aklivity/zilla/issues/1268)
+
+**Merged pull requests:**
+
+- Propagate error code in risingwave binding that's coming either from pgsql-kafka or risingwave [\#1288](https://github.com/aklivity/zilla/pull/1288) ([akrambek](https://github.com/akrambek))
+- Increase write buffer size to accomidate longer path [\#1287](https://github.com/aklivity/zilla/pull/1287) ([akrambek](https://github.com/akrambek))
+
+## [0.9.97](https://github.com/aklivity/zilla/tree/0.9.97) (2024-10-07)
+
+[Full Changelog](https://github.com/aklivity/zilla/compare/0.9.96...0.9.97)
**Implemented enhancements:**
diff --git a/build/flyweight-maven-plugin/pom.xml b/build/flyweight-maven-plugin/pom.xml
index 5140899057..a4e179f998 100644
--- a/build/flyweight-maven-plugin/pom.xml
+++ b/build/flyweight-maven-plugin/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
build
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/build/pom.xml b/build/pom.xml
index a4359bad5f..7268b5777c 100644
--- a/build/pom.xml
+++ b/build/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
zilla
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/cloud/docker-image/pom.xml b/cloud/docker-image/pom.xml
index a2c2c42c56..0008880498 100644
--- a/cloud/docker-image/pom.xml
+++ b/cloud/docker-image/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
cloud
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/cloud/helm-chart/pom.xml b/cloud/helm-chart/pom.xml
index 115cd8cb0b..d1687d6448 100644
--- a/cloud/helm-chart/pom.xml
+++ b/cloud/helm-chart/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
cloud
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/cloud/pom.xml b/cloud/pom.xml
index 26b086946b..c858b8434f 100644
--- a/cloud/pom.xml
+++ b/cloud/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
zilla
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/conf/pom.xml b/conf/pom.xml
index 5fce2b92a4..05dda9ea84 100644
--- a/conf/pom.xml
+++ b/conf/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
zilla
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/incubator/binding-amqp.spec/pom.xml b/incubator/binding-amqp.spec/pom.xml
index afe79e85d9..6e9d25c045 100644
--- a/incubator/binding-amqp.spec/pom.xml
+++ b/incubator/binding-amqp.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
incubator
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/incubator/binding-amqp/pom.xml b/incubator/binding-amqp/pom.xml
index 6069e0f7ed..11b362eeb1 100644
--- a/incubator/binding-amqp/pom.xml
+++ b/incubator/binding-amqp/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
incubator
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/incubator/binding-pgsql-kafka.spec/pom.xml b/incubator/binding-pgsql-kafka.spec/pom.xml
index dbf159e5a9..db699d8d67 100644
--- a/incubator/binding-pgsql-kafka.spec/pom.xml
+++ b/incubator/binding-pgsql-kafka.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
incubator
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/incubator/binding-pgsql-kafka/pom.xml b/incubator/binding-pgsql-kafka/pom.xml
index d2f24cac6d..897a425ee9 100644
--- a/incubator/binding-pgsql-kafka/pom.xml
+++ b/incubator/binding-pgsql-kafka/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
incubator
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/incubator/binding-pgsql.spec/pom.xml b/incubator/binding-pgsql.spec/pom.xml
index 157dc07223..f41d1e88db 100644
--- a/incubator/binding-pgsql.spec/pom.xml
+++ b/incubator/binding-pgsql.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
incubator
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/incubator/binding-pgsql.spec/src/main/java/io/aklivity/zilla/specs/binding/pgsql/PgsqlFunctions.java b/incubator/binding-pgsql.spec/src/main/java/io/aklivity/zilla/specs/binding/pgsql/PgsqlFunctions.java
index ca46aa48c1..ec738bb33a 100644
--- a/incubator/binding-pgsql.spec/src/main/java/io/aklivity/zilla/specs/binding/pgsql/PgsqlFunctions.java
+++ b/incubator/binding-pgsql.spec/src/main/java/io/aklivity/zilla/specs/binding/pgsql/PgsqlFunctions.java
@@ -23,6 +23,7 @@
import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlColumnInfoFW;
import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlCompletedFlushExFW;
import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlDataExFW;
+import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlErrorFlushExFW;
import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlFlushExFW;
import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlFormat;
import io.aklivity.zilla.specs.binding.pgsql.internal.types.stream.PgsqlMessageType;
@@ -215,6 +216,13 @@ public PgsqlCompletedFlushExBuilder completion()
return new PgsqlCompletedFlushExBuilder();
}
+ public PgsqlErrorFlushExBuilder error()
+ {
+ flushExRW.kind(PgsqlMessageType.ERROR.value());
+
+ return new PgsqlErrorFlushExBuilder();
+ }
+
public PgsqlReadyFlushExBuilder ready()
{
flushExRW.kind(PgsqlMessageType.READY.value());
@@ -351,6 +359,44 @@ public PgsqlFlushExBuilder build()
}
}
+ public final class PgsqlErrorFlushExBuilder
+ {
+ private final PgsqlErrorFlushExFW.Builder pgsqlErrorFlushExRW = new PgsqlErrorFlushExFW.Builder();
+
+ private PgsqlErrorFlushExBuilder()
+ {
+ pgsqlErrorFlushExRW.wrap(writeBuffer, PgsqlFlushExFW.FIELD_OFFSET_TYPE, writeBuffer.capacity());
+ }
+
+ public PgsqlErrorFlushExBuilder severity(
+ String severity)
+ {
+ pgsqlErrorFlushExRW.severity(String.format("%s\u0000", severity));
+ return this;
+ }
+
+ public PgsqlErrorFlushExBuilder code(
+ String code)
+ {
+ pgsqlErrorFlushExRW.code(String.format("%s\u0000", code));
+ return this;
+ }
+
+ public PgsqlErrorFlushExBuilder message(
+ String message)
+ {
+ pgsqlErrorFlushExRW.message(String.format("%s\u0000", message));
+ return this;
+ }
+
+ public PgsqlFlushExBuilder build()
+ {
+ final PgsqlErrorFlushExFW pgsqlErrorFlushEx = pgsqlErrorFlushExRW.build();
+ flushExRO.wrap(writeBuffer, 0, pgsqlErrorFlushEx.limit());
+ return PgsqlFlushExBuilder.this;
+ }
+ }
+
public final class PgsqlReadyFlushExBuilder
{
private final PgsqlReadyFlushExFW.Builder pgsqlReadyFlushExRW = new PgsqlReadyFlushExFW.Builder();
diff --git a/incubator/binding-pgsql.spec/src/main/resources/META-INF/zilla/pgsql.idl b/incubator/binding-pgsql.spec/src/main/resources/META-INF/zilla/pgsql.idl
index 8e9de96273..245d83f062 100644
--- a/incubator/binding-pgsql.spec/src/main/resources/META-INF/zilla/pgsql.idl
+++ b/incubator/binding-pgsql.spec/src/main/resources/META-INF/zilla/pgsql.idl
@@ -33,6 +33,7 @@ scope pgsql
ROW (68),
TYPE (84),
COMPLETION (67),
+ ERROR (69),
READY (90)
}
@@ -56,6 +57,7 @@ scope pgsql
{
case 84: pgsql::stream::PgsqlTypeFlushEx type;
case 67: pgsql::stream::PgsqlCompletedFlushEx completion;
+ case 69: pgsql::stream::PgsqlErrorFlushEx error;
case 90: pgsql::stream::PgsqlReadyFlushEx ready;
}
@@ -86,6 +88,13 @@ scope pgsql
string16 tag;
}
+ struct PgsqlErrorFlushEx
+ {
+ string16 severity;
+ string16 code;
+ string16 message;
+ }
+
enum PgsqlStatus (uint8)
{
IDLE(73),
diff --git a/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/select.table.with.error/client.rpt b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/select.table.with.error/client.rpt
new file mode 100644
index 0000000000..c86d425f2d
--- /dev/null
+++ b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/select.table.with.error/client.rpt
@@ -0,0 +1,56 @@
+#
+# Copyright 2021-2023 Aklivity Inc
+#
+# Licensed under the Aklivity Community License (the "License"); you may not use
+# this file except in compliance with the License. You may obtain a copy of the
+# License at
+#
+# https://www.aklivity.io/aklivity-community-license/
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+#
+
+connect "zilla://streams/app0"
+ option zilla:window 8192
+ option zilla:transmission "duplex"
+
+write zilla:begin.ext ${pgsql:beginEx()
+ .typeId(zilla:id("pgsql"))
+ .parameter("user", "root")
+ .parameter("database", "dev")
+ .parameter("application_name", "psql")
+ .parameter("client_encoding", "UTF8")
+ .build()}
+
+connected
+
+write zilla:data.ext ${pgsql:dataEx()
+ .typeId(zilla:id("pgsql"))
+ .query()
+ .build()
+ .build()}
+write "SELECT * FROM unknown;"
+ [0x00]
+write flush
+
+read advised zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .error()
+ .severity("ERROR")
+ .code("XX000")
+ .message("Failed to run the query.")
+ .build()
+ .build()}
+
+read advised zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .ready()
+ .status("IDLE")
+ .build()
+ .build()}
+
+read closed
+write close
diff --git a/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/select.table.with.error/server.rpt b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/select.table.with.error/server.rpt
new file mode 100644
index 0000000000..c7b8188f31
--- /dev/null
+++ b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/application/select.table.with.error/server.rpt
@@ -0,0 +1,59 @@
+#
+# Copyright 2021-2023 Aklivity Inc
+#
+# Licensed under the Aklivity Community License (the "License"); you may not use
+# this file except in compliance with the License. You may obtain a copy of the
+# License at
+#
+# https://www.aklivity.io/aklivity-community-license/
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+#
+
+property serverAddress "zilla://streams/app0"
+
+accept ${serverAddress}
+ option zilla:window 8192
+ option zilla:transmission "duplex"
+
+accepted
+
+read zilla:begin.ext ${pgsql:beginEx()
+ .typeId(zilla:id("pgsql"))
+ .parameter("user", "root")
+ .parameter("database", "dev")
+ .parameter("application_name", "psql")
+ .parameter("client_encoding", "UTF8")
+ .build()}
+
+connected
+
+read zilla:data.ext ${pgsql:dataEx()
+ .typeId(zilla:id("pgsql"))
+ .query()
+ .build()
+ .build()}
+read "SELECT * FROM unknown;"
+ [0x00]
+
+write advise zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .error()
+ .severity("ERROR")
+ .code("XX000")
+ .message("Failed to run the query.")
+ .build()
+ .build()}
+
+write advise zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .ready()
+ .status("IDLE")
+ .build()
+ .build()}
+
+write close
+read closed
diff --git a/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/select.table.with.error/client.rpt b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/select.table.with.error/client.rpt
new file mode 100644
index 0000000000..451d246e87
--- /dev/null
+++ b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/select.table.with.error/client.rpt
@@ -0,0 +1,93 @@
+#
+# Copyright 2021-2023 Aklivity Inc
+#
+# Licensed under the Aklivity Community License (the "License"); you may not use
+# this file except in compliance with the License. You may obtain a copy of the
+# License at
+#
+# https://www.aklivity.io/aklivity-community-license/
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+#
+
+property networkConnectWindow 8192
+
+connect "zilla://streams/net0"
+ option zilla:window ${networkConnectWindow}
+ option zilla:transmission "duplex"
+ option zilla:byteorder "network"
+
+connected
+
+write 75 # length
+ 3s # major version
+ 0s # minor version
+ "user" [0x00] # name
+ "root" [0x00] # value
+ "database" [0x00] # name
+ "dev" [0x00] # value
+ "application_name" [0x00] # name
+ "psql" [0x00] # value
+ "client_encoding" [0x00] # name
+ "UTF8" [0x00] # value
+ [0x00] # end of parameters
+
+read [0x52] # type R
+ 8 # length
+ 0 # authentication type
+
+read [0x4b] # type K
+ 12 # length
+ 0 # pid
+ 0 # key
+
+read [0x53] # type S
+ 25 # length
+ "client_encoding" [0x00] # name
+ "UTF8" [0x00] # value
+
+read [0x53] # type S
+ 35 # length
+ "standard_conforming_strings" [0x00] # name
+ [0x6f 0x6e 0x00] # value
+
+read [0x53] # type S
+ 25 # length
+ "server_version" [0x00] # name
+ "1.0.0" [0x00] # value
+
+read [0x53] # type S
+ 27 # length
+ "application_name" [0x00] # name
+ "zilla" [0x00] # value
+
+read [0x5a] # type Z
+ 5 # length
+ [0x49] # status
+
+write [0x51] # type Q
+ 27 # length
+ "SELECT * FROM unknown;"
+ [0x00]
+
+read [0x45] # type E
+ 41 # length
+ "ERROR" # severity
+ [0x00] # end of string
+ "XX000" # code
+ [0x00] # end of string
+ "Failed to run the query." # code
+ [0x00] # end of string
+
+read [0x5a] # type Z
+ 5 # length
+ [0x49] # status
+
+read [0x58] # type X
+ 4 # length
+
+read closed
+write close
diff --git a/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/select.table.with.error/server.rpt b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/select.table.with.error/server.rpt
new file mode 100644
index 0000000000..d26df720d0
--- /dev/null
+++ b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/select.table.with.error/server.rpt
@@ -0,0 +1,95 @@
+#
+# Copyright 2021-2023 Aklivity Inc
+#
+# Licensed under the Aklivity Community License (the "License"); you may not use
+# this file except in compliance with the License. You may obtain a copy of the
+# License at
+#
+# https://www.aklivity.io/aklivity-community-license/
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+#
+
+property networkAcceptWindow 8192
+
+accept "zilla://streams/net0"
+ option zilla:window ${networkAcceptWindow}
+ option zilla:transmission "duplex"
+ option zilla:byteorder "network"
+
+accepted
+
+connected
+
+read 75 # length
+ 3s # major version
+ 0s # minor version
+ "user" [0x00] # name
+ "root" [0x00] # value
+ "database" [0x00] # name
+ "dev" [0x00] # value
+ "application_name" [0x00] # name
+ "psql" [0x00] # value
+ "client_encoding" [0x00] # name
+ "UTF8" [0x00] # value
+ [0x00] # end of parameters
+
+write [0x52] # type R
+ 8 # length
+ 0 # authentication type
+
+write [0x4b] # type K
+ 12 # length
+ 0 # pid
+ 0 # key
+
+write [0x53] # type S
+ 25 # length
+ "client_encoding" [0x00] # name
+ "UTF8" [0x00] # value
+
+write [0x53] # type S
+ 35 # length
+ "standard_conforming_strings" [0x00] # name
+ [0x6f 0x6e 0x00] # value
+
+write [0x53] # type S
+ 25 # length
+ "server_version" [0x00] # name
+ "1.0.0" [0x00] # value
+
+write [0x53] # type S
+ 27 # length
+ "application_name" [0x00] # name
+ "zilla" [0x00] # value
+
+write [0x5a] # type Z
+ 5 # length
+ [0x49] # status
+
+read [0x51] # type Q
+ 27 # length
+ "SELECT * FROM unknown;"
+ [0x00]
+
+write [0x45] # type E
+ 41 # length
+ "ERROR" # severity
+ [0x00] # end of string
+ "XX000" # code
+ [0x00] # end of string
+ "Failed to run the query." # code
+ [0x00] # end of string
+
+write [0x5a] # type Z
+ 5 # length
+ [0x49] # status
+
+write [0x58] # type X
+ 4 # length
+
+write close
+read closed
diff --git a/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/select.table/server.rpt b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/select.table/server.rpt
index bdd4c46b05..aa383cd613 100644
--- a/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/select.table/server.rpt
+++ b/incubator/binding-pgsql.spec/src/main/scripts/io/aklivity/zilla/specs/binding/pgsql/streams/network/select.table/server.rpt
@@ -117,7 +117,7 @@ write [0x44] # type D
write [0x43] # type C
13 # length
"SELECT 1" # tag
- [0x00] # End of string
+ [0x00] # End of string
write [0x5a] # type Z
5 # length
diff --git a/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/ApplicationIT.java b/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/ApplicationIT.java
index 7f88a05062..1464e0b1f1 100644
--- a/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/ApplicationIT.java
+++ b/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/ApplicationIT.java
@@ -55,6 +55,15 @@ public void shouldSelectTable() throws Exception
k3po.finish();
}
+ @Test
+ @Specification({
+ "${app}/select.table.with.error/client",
+ "${app}/select.table.with.error/server" })
+ public void shouldSelectTableWithError() throws Exception
+ {
+ k3po.finish();
+ }
+
@Test
@Specification({
"${app}/client.sent.write.abort/client",
diff --git a/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/NetworkIT.java b/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/NetworkIT.java
index 89eed98a61..5f90553206 100644
--- a/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/NetworkIT.java
+++ b/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/NetworkIT.java
@@ -55,6 +55,15 @@ public void shouldSelectTable() throws Exception
k3po.finish();
}
+ @Test
+ @Specification({
+ "${net}/select.table.with.error/client",
+ "${net}/select.table.with.error/server" })
+ public void shouldSelectTableWithError() throws Exception
+ {
+ k3po.finish();
+ }
+
@Test
@Specification({
"${net}/ssl.request/client",
diff --git a/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/internal/PgsqlFunctionsTest.java b/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/internal/PgsqlFunctionsTest.java
index 0367fe9dbc..b30378bf22 100644
--- a/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/internal/PgsqlFunctionsTest.java
+++ b/incubator/binding-pgsql.spec/src/test/java/io/aklivity/zilla/specs/binding/pgsql/streams/internal/PgsqlFunctionsTest.java
@@ -154,6 +154,27 @@ public void shouldEncodePgsqlFlushCompletionExtension()
assertEquals("CREATE_TABLE\u0000", flushEx.completion().tag().asString());
}
+ @Test
+ public void shouldEncodePgsqlFlushErrorExtension()
+ {
+ final byte[] build = flushEx()
+ .typeId(0x01)
+ .error()
+ .severity("ERROR")
+ .code("XX000")
+ .message("Failed to run the query.")
+ .build()
+ .build();
+
+ DirectBuffer buffer = new UnsafeBuffer(build);
+ PgsqlFlushExFW flushEx = new PgsqlFlushExFW().wrap(buffer, 0, buffer.capacity());
+
+ assertEquals(0x01, flushEx.typeId());
+ assertEquals("ERROR\u0000", flushEx.error().severity().asString());
+ assertEquals("XX000\u0000", flushEx.error().code().asString());
+ assertEquals("Failed to run the query.\u0000", flushEx.error().message().asString());
+ }
+
@Test
public void shouldEncodePgsqlFlushReadyExtension()
{
diff --git a/incubator/binding-pgsql/pom.xml b/incubator/binding-pgsql/pom.xml
index 08d7d298a0..d08aa40ad0 100644
--- a/incubator/binding-pgsql/pom.xml
+++ b/incubator/binding-pgsql/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
incubator
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlClientFactory.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlClientFactory.java
index bbc5ff36fa..6da148efbb 100644
--- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlClientFactory.java
+++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlClientFactory.java
@@ -51,6 +51,7 @@
import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlBeginExFW;
import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlColumnInfoFW;
import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlDataExFW;
+import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlErrorFlushExFW;
import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlFlushExFW;
import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlFormat;
import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlQueryDataExFW;
@@ -75,6 +76,7 @@ public final class PgsqlClientFactory implements PgsqlStreamFactory
private static final Byte MESSAGE_TYPE_COMPLETION = 'C';
private static final Byte MESSAGE_TYPE_READY = 'Z';
private static final Byte MESSAGE_TYPE_TERMINATION = 'X';
+ private static final Byte MESSAGE_TYPE_ERROR = 'E';
private static final int AUTHENTICATION_SUCCESS_CODE = 0;
private static final int END_OF_FIELD = 0x00;
@@ -113,6 +115,7 @@ public final class PgsqlClientFactory implements PgsqlStreamFactory
private final PgsqlDataExFW.Builder dataExRW = new PgsqlDataExFW.Builder();
private final PgsqlFlushExFW.Builder flushExRW = new PgsqlFlushExFW.Builder();
+ private final PgsqlErrorFlushExFW.Builder flushErrorExRW = new PgsqlErrorFlushExFW.Builder();
private final Array32FW.Builder columnsRW =
new Array32FW.Builder<>(new PgsqlColumnInfoFW.Builder(), new PgsqlColumnInfoFW());
@@ -127,6 +130,7 @@ public final class PgsqlClientFactory implements PgsqlStreamFactory
private final BufferPool bufferPool;
private final MutableDirectBuffer writeBuffer;
private final MutableDirectBuffer messageBuffer;
+ private final MutableDirectBuffer extBuffer;
private final LongUnaryOperator supplyInitialId;
private final LongUnaryOperator supplyReplyId;
private final BindingHandler streamFactory;
@@ -146,6 +150,7 @@ public final class PgsqlClientFactory implements PgsqlStreamFactory
private final PgsqlClientDecoder decodePgsqlReady = this::decodePgsqlMessageReady;
private final PgsqlClientDecoder decodePgsqlTermination = this::decodePgsqlMessageTerminator;
private final PgsqlClientDecoder decodePgsqlPayload = this::decodePgsqlMessagePayload;
+ private final PgsqlClientDecoder decodePgsqlError = this::decodePgsqlMessageError;
private final PgsqlClientDecoder decodePgsqlIgnoreOne = this::decodePgsqlIgnoreOne;
private final PgsqlClientDecoder decodePgsqlIgnoreAll = this::decodePgsqlIgnoreAll;
@@ -161,6 +166,7 @@ public final class PgsqlClientFactory implements PgsqlStreamFactory
decodersByType.put(MESSAGE_TYPE_COMPLETION, decodePgsqlCompletion);
decodersByType.put(MESSAGE_TYPE_READY, decodePgsqlReady);
decodersByType.put(MESSAGE_TYPE_TERMINATION, decodePgsqlTermination);
+ decodersByType.put(MESSAGE_TYPE_ERROR, decodePgsqlError);
this.decodersByType = decodersByType;
}
@@ -170,6 +176,7 @@ public PgsqlClientFactory(
{
this.writeBuffer = requireNonNull(context.writeBuffer());
this.messageBuffer = new UnsafeBuffer(new byte[writeBuffer.capacity()]);
+ this.extBuffer = new UnsafeBuffer(new byte[writeBuffer.capacity()]);
this.supplyInitialId = context::supplyInitialId;
this.supplyReplyId = context::supplyReplyId;
this.streamFactory = context.streamFactory();
@@ -702,6 +709,39 @@ private void onDecodeMessageCompletion(
stream.doApplicationFlush(traceId, authorization, decodeSlotReserved, completionEx);
}
+ private void onDecodeMessageError(
+ long traceId,
+ long authorization,
+ DirectBuffer buffer,
+ int offset,
+ int length)
+ {
+ int progressOffset = offset;
+
+ PgsqlErrorFlushExFW.Builder error = flushErrorExRW.wrap(extBuffer, 0, extBuffer.capacity());
+
+ final int severityLength = getLengthOfString(buffer, progressOffset);
+ error.severity(buffer, progressOffset, severityLength);
+ progressOffset += severityLength;
+
+ final int codeLength = getLengthOfString(buffer, progressOffset);
+ error.code(buffer, progressOffset, codeLength);
+ progressOffset += codeLength;
+
+ final int messageLength = getLengthOfString(buffer, progressOffset);
+ error.message(buffer, progressOffset, messageLength);
+ progressOffset += messageLength;
+
+ assert offset + length == progressOffset;
+
+ Consumer completionEx = e -> e.set((b, o, l) -> flushExRW.wrap(b, o, l)
+ .typeId(pgsqlTypeId)
+ .error(c -> c.set(error.build()))
+ .build().sizeof());
+
+ stream.doApplicationFlush(traceId, authorization, decodeSlotReserved, completionEx);
+ }
+
private void onDecodeMessageReady(
long traceId,
long authorization,
@@ -1521,23 +1561,47 @@ private int decodePgsqlMessageCompletion(
final PgsqlMessageFW pgsqlCompletion = messageRO.tryWrap(buffer, offset, limit);
- if (pgsqlCompletion != null)
+ if (pgsqlCompletion != null &&
+ limit - offset >= pgsqlCompletion.length() + Integer.BYTES)
{
progressOffset = pgsqlCompletion.limit();
- final int completionSize = pgsqlCompletion.length() - Integer.BYTES;
- payloadRemaining.set(completionSize);
- final int length = Math.min(payloadRemaining.value, limit - progressOffset);
-
+ int length = pgsqlCompletion.length() - Integer.BYTES;
client.onDecodeMessageCompletion(traceId, authorization, buffer, progressOffset, length);
+
progressOffset += length;
- payloadRemaining.set(completionSize - length);
- client.decoder = completionSize == length
- ? decodePgsqlMessage
- : decodePgsqlPayload;
+ client.decoder = decodePgsqlMessage;
}
+ return progressOffset;
+ }
+
+ private int decodePgsqlMessageError(
+ PgsqlClient client,
+ long traceId,
+ long authorization,
+ long budgetId,
+ DirectBuffer buffer,
+ int offset,
+ int limit)
+ {
+ int progressOffset = offset;
+
+ final PgsqlMessageFW pgsqlError = messageRO.tryWrap(buffer, offset, limit);
+
+ if (pgsqlError != null &&
+ limit - offset >= pgsqlError.length() + Integer.BYTES)
+ {
+ progressOffset = pgsqlError.limit();
+
+ int length = pgsqlError.length() - Integer.BYTES;
+ client.onDecodeMessageError(traceId, authorization, buffer, progressOffset, length);
+
+ progressOffset += length;
+
+ client.decoder = decodePgsqlMessage;
+ }
return progressOffset;
}
diff --git a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlServerFactory.java b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlServerFactory.java
index 163b5cc7fe..060a79b2f4 100644
--- a/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlServerFactory.java
+++ b/incubator/binding-pgsql/src/main/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/PgsqlServerFactory.java
@@ -51,6 +51,7 @@
import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlBeginExFW;
import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlCompletedFlushExFW;
import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlDataExFW;
+import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlErrorFlushExFW;
import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlFlushExFW;
import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlParameterFW;
import io.aklivity.zilla.runtime.binding.pgsql.internal.types.stream.PgsqlReadyFlushExFW;
@@ -70,6 +71,7 @@ public final class PgsqlServerFactory implements PgsqlStreamFactory
private static final Byte MESSAGE_TYPE_QUERY = 'Q';
private static final Byte MESSAGE_TYPE_DATA_ROW = 'D';
private static final Byte MESSAGE_TYPE_COMPLETION = 'C';
+ private static final Byte MESSAGE_TYPE_ERROR = 'E';
private static final Byte MESSAGE_TYPE_READY = 'Z';
private static final Byte MESSAGE_TYPE_TERMINATE = 'X';
private static final Byte MESSAGE_TYPE_PARAMETER_STATUS = 'S';
@@ -888,6 +890,9 @@ private void onApplicationFlush(
case PgsqlFlushExFW.KIND_COMPLETION:
doEncodeCompletion(traceId, authorization, pgsqlFlushEx.completion());
break;
+ case PgsqlFlushExFW.KIND_ERROR:
+ doEncodeError(traceId, authorization, pgsqlFlushEx.error());
+ break;
case PgsqlFlushExFW.KIND_READY:
doEncodeReady(traceId, authorization, pgsqlFlushEx.ready());
break;
@@ -1154,6 +1159,32 @@ private void doEncodeCompletion(
server.doNetworkData(traceId, authorization, FLAGS_COMP, 0L, messageBuffer, 0, completionOffset);
}
+ private void doEncodeError(
+ long traceId,
+ long authorization,
+ PgsqlErrorFlushExFW error)
+ {
+ int errorOffset = 0;
+ final int severityLength = error.severity().value().capacity();
+ final int codeLength = error.code().value().capacity();
+ final int messageLength = error.message().value().capacity();
+
+ PgsqlMessageFW messageCompleted = messageRW.wrap(messageBuffer, 0, messageBuffer.capacity())
+ .type(MESSAGE_TYPE_ERROR)
+ .length(Integer.BYTES + severityLength + codeLength + messageLength)
+ .build();
+ errorOffset += messageCompleted.limit();
+
+ messageBuffer.putBytes(errorOffset, error.severity().value(), 0, severityLength);
+ errorOffset += severityLength;
+ messageBuffer.putBytes(errorOffset, error.code().value(), 0, codeLength);
+ errorOffset += codeLength;
+ messageBuffer.putBytes(errorOffset, error.message().value(), 0, messageLength);
+ errorOffset += messageLength;
+
+ server.doNetworkData(traceId, authorization, FLAGS_COMP, 0L, messageBuffer, 0, errorOffset);
+ }
+
private void doEncodeReady(
long traceId,
long authorization,
diff --git a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ClientIT.java b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ClientIT.java
index d309166c54..45ce97869f 100644
--- a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ClientIT.java
+++ b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ClientIT.java
@@ -78,6 +78,16 @@ public void shouldSelectTable() throws Exception
k3po.finish();
}
+ @Test
+ @Configuration("client.yaml")
+ @Specification({
+ "${app}/select.table.with.error/client",
+ "${net}/select.table.with.error/server" })
+ public void shouldSelectTableWithError() throws Exception
+ {
+ k3po.finish();
+ }
+
@Test
@Configuration("client.yaml")
@Specification({
diff --git a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ServerIT.java b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ServerIT.java
index 6bcfdc2b64..eefad57802 100644
--- a/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ServerIT.java
+++ b/incubator/binding-pgsql/src/test/java/io/aklivity/zilla/runtime/binding/pgsql/internal/stream/ServerIT.java
@@ -117,4 +117,14 @@ public void shouldHandleFragmentedCreateTable() throws Exception
{
k3po.finish();
}
+
+ @Test
+ @Configuration("server.yaml")
+ @Specification({
+ "${net}/select.table.with.error/client",
+ "${app}/select.table.with.error/server" })
+ public void shouldSelectTableWithError() throws Exception
+ {
+ k3po.finish();
+ }
}
diff --git a/incubator/binding-risingwave.spec/pom.xml b/incubator/binding-risingwave.spec/pom.xml
index de0d42a726..8c3b7ca403 100644
--- a/incubator/binding-risingwave.spec/pom.xml
+++ b/incubator/binding-risingwave.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
incubator
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt
new file mode 100644
index 0000000000..ff87c92325
--- /dev/null
+++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/client.rpt
@@ -0,0 +1,125 @@
+#
+# Copyright 2021-2023 Aklivity Inc
+#
+# Licensed under the Aklivity Community License (the "License"); you may not use
+# this file except in compliance with the License. You may obtain a copy of the
+# License at
+#
+# https://www.aklivity.io/aklivity-community-license/
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+#
+
+connect "zilla://streams/app1"
+ option zilla:window 8192
+ option zilla:transmission "duplex"
+
+write zilla:begin.ext ${pgsql:beginEx()
+ .typeId(zilla:id("pgsql"))
+ .parameter("user", "root")
+ .parameter("database", "dev")
+ .parameter("application_name", "psql")
+ .parameter("client_encoding", "UTF8")
+ .build()}
+
+connected
+
+write zilla:data.ext ${pgsql:dataEx()
+ .typeId(zilla:id("pgsql"))
+ .query()
+ .build()
+ .build()}
+write "CREATE SOURCE IF NOT EXISTS cities (*)\n"
+ "WITH (\n"
+ " connector='kafka',\n"
+ " properties.bootstrap.server='localhost:9092',\n"
+ " topic='dev.cities',\n"
+ " scan.startup.mode='latest',\n"
+ " scan.startup.timestamp.millis='140000000'\n"
+ ") FORMAT PLAIN ENCODE AVRO (\n"
+ " schema.registry = 'http://localhost:8081'\n"
+ ");"
+ [0x00]
+write flush
+
+read advised zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .error()
+ .severity("ERROR")
+ .code("XX000")
+ .message("Failed to run the query. Source already exists")
+ .build()
+ .build()}
+
+read advised zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .ready()
+ .status("IDLE")
+ .build()
+ .build()}
+
+write zilla:data.ext ${pgsql:dataEx()
+ .typeId(zilla:id("pgsql"))
+ .query()
+ .build()
+ .build()}
+write "UPDATE weather SET id = 'SF';"
+ [0x00]
+write flush
+
+read advised zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .completion()
+ .tag("UPDATE 1")
+ .build()
+ .build()}
+
+read advised zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .ready()
+ .status("IDLE")
+ .build()
+ .build()}
+
+connect "zilla://streams/app2"
+ option zilla:window 8192
+ option zilla:transmission "duplex"
+
+write zilla:begin.ext ${pgsql:beginEx()
+ .typeId(zilla:id("pgsql"))
+ .parameter("user", "root")
+ .parameter("database", "dev")
+ .parameter("application_name", "psql")
+ .parameter("client_encoding", "UTF8")
+ .build()}
+
+connected
+
+write zilla:data.ext ${pgsql:dataEx()
+ .typeId(zilla:id("pgsql"))
+ .query()
+ .build()
+ .build()}
+write "CREATE TOPIC IF NOT EXISTS cities "
+ "(id VARCHAR, name VARCHAR, description VARCHAR);"
+ [0x00]
+
+write flush
+
+read advised zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .completion()
+ .tag("CREATE_TOPIC")
+ .build()
+ .build()}
+
+read advised zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .ready()
+ .status("IDLE")
+ .build()
+ .build()}
+
diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt
new file mode 100644
index 0000000000..6eba9cbf52
--- /dev/null
+++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/effective/query.with.multiple.statements.errored/server.rpt
@@ -0,0 +1,128 @@
+#
+# Copyright 2021-2023 Aklivity Inc
+#
+# Licensed under the Aklivity Community License (the "License"); you may not use
+# this file except in compliance with the License. You may obtain a copy of the
+# License at
+#
+# https://www.aklivity.io/aklivity-community-license/
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+#
+
+accept "zilla://streams/app1"
+ option zilla:window 8192
+ option zilla:transmission "duplex"
+
+accepted
+
+read zilla:begin.ext ${pgsql:beginEx()
+ .typeId(zilla:id("pgsql"))
+ .parameter("user", "root")
+ .parameter("database", "dev")
+ .parameter("application_name", "psql")
+ .parameter("client_encoding", "UTF8")
+ .build()}
+
+connected
+
+read await CREATE_TOPIC_COMPLETED
+
+read zilla:data.ext ${pgsql:dataEx()
+ .typeId(zilla:id("pgsql"))
+ .query()
+ .build()
+ .build()}
+read "CREATE SOURCE IF NOT EXISTS cities (*)\n"
+ "WITH (\n"
+ " connector='kafka',\n"
+ " properties.bootstrap.server='localhost:9092',\n"
+ " topic='dev.cities',\n"
+ " scan.startup.mode='latest',\n"
+ " scan.startup.timestamp.millis='140000000'\n"
+ ") FORMAT PLAIN ENCODE AVRO (\n"
+ " schema.registry = 'http://localhost:8081'\n"
+ ");"
+ [0x00]
+
+write advise zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .error()
+ .severity("ERROR")
+ .code("XX000")
+ .message("Failed to run the query. Source already exists")
+ .build()
+ .build()}
+
+write advise zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .ready()
+ .status("IDLE")
+ .build()
+ .build()}
+
+read zilla:data.ext ${pgsql:dataEx()
+ .typeId(zilla:id("pgsql"))
+ .query()
+ .build()
+ .build()}
+read "UPDATE weather SET id = 'SF';"
+ [0x00]
+
+write advise zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .completion()
+ .tag("UPDATE 1")
+ .build()
+ .build()}
+
+write advise zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .ready()
+ .status("IDLE")
+ .build()
+ .build()}
+
+accept "zilla://streams/app2"
+ option zilla:window 8192
+ option zilla:transmission "duplex"
+
+accepted
+
+read zilla:begin.ext ${pgsql:beginEx()
+ .typeId(zilla:id("pgsql"))
+ .parameter("user", "root")
+ .parameter("database", "dev")
+ .parameter("application_name", "psql")
+ .parameter("client_encoding", "UTF8")
+ .build()}
+
+connected
+
+read zilla:data.ext ${pgsql:dataEx()
+ .typeId(zilla:id("pgsql"))
+ .query()
+ .build()
+ .build()}
+read "CREATE TOPIC IF NOT EXISTS cities "
+ "(id VARCHAR, name VARCHAR, description VARCHAR);"
+ [0x00]
+
+write advise zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .completion()
+ .tag("CREATE_TOPIC")
+ .build()
+ .build()}
+
+write notify CREATE_TOPIC_COMPLETED
+
+write advise zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .ready()
+ .status("IDLE")
+ .build()
+ .build()}
diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt
new file mode 100644
index 0000000000..3b8932a870
--- /dev/null
+++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/client.rpt
@@ -0,0 +1,62 @@
+#
+# Copyright 2021-2023 Aklivity Inc
+#
+# Licensed under the Aklivity Community License (the "License"); you may not use
+# this file except in compliance with the License. You may obtain a copy of the
+# License at
+#
+# https://www.aklivity.io/aklivity-community-license/
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+#
+
+connect "zilla://streams/app0"
+ option zilla:window 8192
+ option zilla:transmission "duplex"
+
+write zilla:begin.ext ${pgsql:beginEx()
+ .typeId(zilla:id("pgsql"))
+ .parameter("user", "root")
+ .parameter("database", "dev")
+ .parameter("application_name", "psql")
+ .parameter("client_encoding", "UTF8")
+ .build()}
+
+connected
+
+write zilla:data.ext ${pgsql:dataEx()
+ .typeId(zilla:id("pgsql"))
+ .query()
+ .build()
+ .build()}
+write "CREATE STREAM cities "
+ "(id VARCHAR, name VARCHAR, description VARCHAR);"
+ "UPDATE weather SET id = 'SF';"
+ [0x00]
+write flush
+
+read advised zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .error()
+ .severity("ERROR")
+ .code("XX000")
+ .message("Failed to run the query. Source already exists")
+ .build()
+ .build()}
+
+read advised zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .completion()
+ .tag("UPDATE 1")
+ .build()
+ .build()}
+
+read advised zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .ready()
+ .status("IDLE")
+ .build()
+ .build()}
diff --git a/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt
new file mode 100644
index 0000000000..c71c654e58
--- /dev/null
+++ b/incubator/binding-risingwave.spec/src/main/scripts/io/aklivity/zilla/specs/binding/risingwave/streams/pgsql/query.with.multiple.statements.errored/server.rpt
@@ -0,0 +1,66 @@
+#
+# Copyright 2021-2023 Aklivity Inc
+#
+# Licensed under the Aklivity Community License (the "License"); you may not use
+# this file except in compliance with the License. You may obtain a copy of the
+# License at
+#
+# https://www.aklivity.io/aklivity-community-license/
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+#
+
+property serverAddress "zilla://streams/app0"
+
+accept ${serverAddress}
+ option zilla:window 8192
+ option zilla:transmission "duplex"
+
+accepted
+
+read zilla:begin.ext ${pgsql:beginEx()
+ .typeId(zilla:id("pgsql"))
+ .parameter("user", "root")
+ .parameter("database", "dev")
+ .parameter("application_name", "psql")
+ .parameter("client_encoding", "UTF8")
+ .build()}
+
+connected
+
+read zilla:data.ext ${pgsql:dataEx()
+ .typeId(zilla:id("pgsql"))
+ .query()
+ .build()
+ .build()}
+read "CREATE STREAM cities "
+ "(id VARCHAR, name VARCHAR, description VARCHAR);"
+ "UPDATE weather SET id = 'SF';"
+ [0x00]
+
+write advise zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .error()
+ .severity("ERROR")
+ .code("XX000")
+ .message("Failed to run the query. Source already exists")
+ .build()
+ .build()}
+
+write advise zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .completion()
+ .tag("UPDATE 1")
+ .build()
+ .build()}
+
+write advise zilla:flush ${pgsql:flushEx()
+ .typeId(zilla:id("pgsql"))
+ .ready()
+ .status("IDLE")
+ .build()
+ .build()}
+
diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java
index 96cd3a4e70..f60e0d1d04 100644
--- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java
+++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/EffectiveIT.java
@@ -169,4 +169,14 @@ public void shouldCreateStreams() throws Exception
{
k3po.finish();
}
+
+ @Test
+ @Specification({
+ "${app}/query.with.multiple.statements.errored/client",
+ "${app}/query.with.multiple.statements.errored/server"
+ })
+ public void shouldHandleQueryWithMultiStatementsThatErrored() throws Exception
+ {
+ k3po.finish();
+ }
}
diff --git a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java
index da1f54436f..d2783aa029 100644
--- a/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java
+++ b/incubator/binding-risingwave.spec/src/test/java/io/aklivity/zilla/specs/binding/risingwave/streams/PgsqlIT.java
@@ -169,4 +169,14 @@ public void shouldCreateTables() throws Exception
{
k3po.finish();
}
+
+ @Test
+ @Specification({
+ "${app}/query.with.multiple.statements.errored/client",
+ "${app}/query.with.multiple.statements.errored/server"
+ })
+ public void shouldHandleQueryWithMultiStatementsThatErrored() throws Exception
+ {
+ k3po.finish();
+ }
}
diff --git a/incubator/binding-risingwave/pom.xml b/incubator/binding-risingwave/pom.xml
index 56beda2030..f50ad4a401 100644
--- a/incubator/binding-risingwave/pom.xml
+++ b/incubator/binding-risingwave/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
incubator
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java
index a4e1a31aee..97fd355d6e 100644
--- a/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java
+++ b/incubator/binding-risingwave/src/main/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/RisingwaveProxyFactory.java
@@ -79,6 +79,9 @@ public final class RisingwaveProxyFactory implements RisingwaveStreamFactory
private static final int FLAGS_FIN = 0x01;
private static final int FLAGS_COMP = 0x03;
+ private static final int COMMAND_PROCESSED_ERRORED = -1;
+ private static final int COMMAND_PROCESSED_NONE = 0;
+
private static final DirectBuffer EMPTY_BUFFER = new UnsafeBuffer(new byte[0]);
private static final OctetsFW EMPTY_OCTETS = new OctetsFW().wrap(EMPTY_BUFFER, 0, 0);
private static final Consumer EMPTY_EXTENSION = ex -> {};
@@ -263,7 +266,7 @@ private final class PgsqlServer
private int state;
- private int commandsProcessed = 0;
+ private int commandsProcessed = COMMAND_PROCESSED_NONE;
private int queryProgressOffset;
private PgsqlServer(
@@ -498,17 +501,20 @@ private void onAppWindow(
}
private void onCommandCompleted(
- long traceId,
- long authorization,
- int progress,
- RisingwaveCompletionCommand command)
+ long traceId,
+ long authorization,
+ int progress,
+ RisingwaveCompletionCommand command)
{
final MutableDirectBuffer parserBuffer = bufferPool.buffer(parserSlot);
- commandsProcessed = 0;
- parserSlotOffset -= progress;
+ if (commandsProcessed != COMMAND_PROCESSED_ERRORED)
+ {
+ doCommandCompletion(traceId, authorization, command);
+ }
- doCommandCompletion(traceId, authorization, command);
+ parserSlotOffset -= progress;
+ commandsProcessed = COMMAND_PROCESSED_NONE;
parserBuffer.putBytes(0, parserBuffer, progress, parserSlotOffset);
@@ -541,7 +547,9 @@ private void onQueryReady(
PgsqlStatus pgsqlStatus = pgsqlFlushEx.ready().status().get();
if (pgsqlStatus == PgsqlStatus.IDLE)
{
- commandsProcessed++;
+ commandsProcessed = commandsProcessed != COMMAND_PROCESSED_ERRORED
+ ? commandsProcessed + 1
+ : COMMAND_PROCESSED_ERRORED;
doParseQuery(traceId, authorization);
}
else
@@ -921,6 +929,9 @@ private void onAppFlush(
case PgsqlFlushExFW.KIND_COMPLETION:
onAppCompletionFlush(traceId, authorization, pgsqlFlushEx);
break;
+ case PgsqlFlushExFW.KIND_ERROR:
+ onAppErrorFlush(traceId, authorization, pgsqlFlushEx);
+ break;
case PgsqlFlushExFW.KIND_READY:
onAppReadyFlush(traceId, authorization, pgsqlFlushEx);
break;
@@ -1007,6 +1018,16 @@ private void onAppCompletionFlush(
completionCommand.handle(server, traceId, authorization, pgsqlFlushEx);
}
+ private void onAppErrorFlush(
+ long traceId,
+ long authorization,
+ PgsqlFlushExFW pgsqlFlushEx)
+ {
+ messageOffset = 0;
+ server.doAppFlush(traceId, authorization, pgsqlFlushEx);
+ server.commandsProcessed = COMMAND_PROCESSED_ERRORED;
+ }
+
private void onAppReadyFlush(
long traceId,
long authorization,
@@ -1467,7 +1488,8 @@ private void decodeCreateTableCommand(
int offset,
int length)
{
- if (server.commandsProcessed == 6)
+ if (server.commandsProcessed == 6 ||
+ server.commandsProcessed == COMMAND_PROCESSED_ERRORED)
{
server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.CREATE_TABLE_COMMAND);
}
@@ -1525,7 +1547,8 @@ private void decodeCreateStreamCommand(
int offset,
int length)
{
- if (server.commandsProcessed == 2)
+ if (server.commandsProcessed == 2 ||
+ server.commandsProcessed == COMMAND_PROCESSED_ERRORED)
{
server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.CREATE_STREAM_COMMAND);
}
@@ -1566,7 +1589,8 @@ private void decodeCreateMaterializedViewCommand(
int offset,
int length)
{
- if (server.commandsProcessed == 4)
+ if (server.commandsProcessed == 4 ||
+ server.commandsProcessed == COMMAND_PROCESSED_ERRORED)
{
server.onCommandCompleted(traceId, authorization, length,
RisingwaveCompletionCommand.CREATE_MATERIALIZED_VIEW_COMMAND);
@@ -1623,7 +1647,8 @@ private void decodeCreateFunctionCommand(
int offset,
int length)
{
- if (server.commandsProcessed == 1)
+ if (server.commandsProcessed == 1 ||
+ server.commandsProcessed == COMMAND_PROCESSED_ERRORED)
{
server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.CREATE_FUNCTION_COMMAND);
}
@@ -1660,7 +1685,8 @@ private void decodeUnknownCommand(
int offset,
int length)
{
- if (server.commandsProcessed == 1)
+ if (server.commandsProcessed == 1 ||
+ server.commandsProcessed == COMMAND_PROCESSED_ERRORED)
{
server.onCommandCompleted(traceId, authorization, length, RisingwaveCompletionCommand.UNKNOWN_COMMAND);
}
diff --git a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java
index 0be2a80f18..97ea8bb3b2 100644
--- a/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java
+++ b/incubator/binding-risingwave/src/test/java/io/aklivity/zilla/runtime/binding/risingwave/internal/stream/ProxyIT.java
@@ -100,6 +100,17 @@ public void shouldHandleQueryWithMultiStatements() throws Exception
k3po.finish();
}
+ @Test
+ @Configuration("proxy.yaml")
+ @Specification({
+ "${pgsql}/query.with.multiple.statements.errored/client",
+ "${effective}/query.with.multiple.statements.errored/server"
+ })
+ public void shouldHandleQueryWithMultiStatementsThatErrored() throws Exception
+ {
+ k3po.finish();
+ }
+
@Test
@Configuration("proxy.yaml")
@Specification({
diff --git a/incubator/command-dump/pom.xml b/incubator/command-dump/pom.xml
index 08a8a9b735..ef8d02c3da 100644
--- a/incubator/command-dump/pom.xml
+++ b/incubator/command-dump/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
incubator
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/incubator/command-log/pom.xml b/incubator/command-log/pom.xml
index 89a50e343f..b8cb36f3c7 100644
--- a/incubator/command-log/pom.xml
+++ b/incubator/command-log/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
incubator
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/incubator/command-tune/pom.xml b/incubator/command-tune/pom.xml
index 353d43a934..d3b35679df 100644
--- a/incubator/command-tune/pom.xml
+++ b/incubator/command-tune/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
incubator
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/incubator/pom.xml b/incubator/pom.xml
index c694066601..12fcd58f5c 100644
--- a/incubator/pom.xml
+++ b/incubator/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
zilla
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/manager/pom.xml b/manager/pom.xml
index 962b99d0b0..e797120421 100644
--- a/manager/pom.xml
+++ b/manager/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
zilla
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/pom.xml b/pom.xml
index ec5a7d6ce3..21e534be00 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
4.0.0
io.aklivity.zilla
zilla
- 0.9.97
+ 0.9.98
pom
zilla
https://github.com/aklivity/zilla
@@ -58,7 +58,7 @@
1.21.1
1.7.36
5.10.2
- 4.0.22
+ 4.0.23
2.6.0
5.8.0
3.3.0
diff --git a/runtime/binding-asyncapi/pom.xml b/runtime/binding-asyncapi/pom.xml
index 4982cb11cb..bee2455c7c 100644
--- a/runtime/binding-asyncapi/pom.xml
+++ b/runtime/binding-asyncapi/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-echo/pom.xml b/runtime/binding-echo/pom.xml
index b44df689f6..95463b61c5 100644
--- a/runtime/binding-echo/pom.xml
+++ b/runtime/binding-echo/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-fan/pom.xml b/runtime/binding-fan/pom.xml
index b35557702d..6f8325a4a9 100644
--- a/runtime/binding-fan/pom.xml
+++ b/runtime/binding-fan/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-filesystem/pom.xml b/runtime/binding-filesystem/pom.xml
index 1012986a92..58a1848671 100644
--- a/runtime/binding-filesystem/pom.xml
+++ b/runtime/binding-filesystem/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-grpc-kafka/pom.xml b/runtime/binding-grpc-kafka/pom.xml
index 703e99ea19..dfb94df94d 100644
--- a/runtime/binding-grpc-kafka/pom.xml
+++ b/runtime/binding-grpc-kafka/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-grpc/pom.xml b/runtime/binding-grpc/pom.xml
index 2b86700ead..7d2b99526a 100644
--- a/runtime/binding-grpc/pom.xml
+++ b/runtime/binding-grpc/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-http-filesystem/pom.xml b/runtime/binding-http-filesystem/pom.xml
index 714e9425fa..f23b9fe396 100644
--- a/runtime/binding-http-filesystem/pom.xml
+++ b/runtime/binding-http-filesystem/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-http-kafka/pom.xml b/runtime/binding-http-kafka/pom.xml
index 522860ce6f..738159e6be 100644
--- a/runtime/binding-http-kafka/pom.xml
+++ b/runtime/binding-http-kafka/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-http/pom.xml b/runtime/binding-http/pom.xml
index b18a1b2393..6ec757e318 100644
--- a/runtime/binding-http/pom.xml
+++ b/runtime/binding-http/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/HttpEventContext.java b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/HttpEventContext.java
index 45007d7bf9..ca751603e7 100644
--- a/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/HttpEventContext.java
+++ b/runtime/binding-http/src/main/java/io/aklivity/zilla/runtime/binding/http/internal/HttpEventContext.java
@@ -35,7 +35,7 @@
public class HttpEventContext
{
- private static final int EVENT_BUFFER_CAPACITY = 2048;
+ private static final int EVENT_BUFFER_CAPACITY = 8192;
private static final String8FW HEADER_SCHEME = new String8FW(":scheme");
private static final String8FW HEADER_METHOD = new String8FW(":method");
private static final String8FW HEADER_AUTHORITY = new String8FW(":authority");
diff --git a/runtime/binding-kafka-grpc/pom.xml b/runtime/binding-kafka-grpc/pom.xml
index 16ab43d0f0..78175098ad 100644
--- a/runtime/binding-kafka-grpc/pom.xml
+++ b/runtime/binding-kafka-grpc/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-kafka/pom.xml b/runtime/binding-kafka/pom.xml
index 86aba12931..bf1b04b1a1 100644
--- a/runtime/binding-kafka/pom.xml
+++ b/runtime/binding-kafka/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-mqtt-kafka/pom.xml b/runtime/binding-mqtt-kafka/pom.xml
index 23360ce1f4..8b1489b36e 100644
--- a/runtime/binding-mqtt-kafka/pom.xml
+++ b/runtime/binding-mqtt-kafka/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-mqtt/pom.xml b/runtime/binding-mqtt/pom.xml
index f909c47a48..10e88c874d 100644
--- a/runtime/binding-mqtt/pom.xml
+++ b/runtime/binding-mqtt/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-openapi-asyncapi/pom.xml b/runtime/binding-openapi-asyncapi/pom.xml
index ab32ca681e..cac0c44cac 100644
--- a/runtime/binding-openapi-asyncapi/pom.xml
+++ b/runtime/binding-openapi-asyncapi/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-openapi/pom.xml b/runtime/binding-openapi/pom.xml
index 40ba244303..ffb35fe30b 100644
--- a/runtime/binding-openapi/pom.xml
+++ b/runtime/binding-openapi/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-proxy/pom.xml b/runtime/binding-proxy/pom.xml
index 690ff6cf2a..3262b104e7 100644
--- a/runtime/binding-proxy/pom.xml
+++ b/runtime/binding-proxy/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-sse-kafka/pom.xml b/runtime/binding-sse-kafka/pom.xml
index 040dd67b82..41f19c4887 100644
--- a/runtime/binding-sse-kafka/pom.xml
+++ b/runtime/binding-sse-kafka/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-sse/pom.xml b/runtime/binding-sse/pom.xml
index d95b35d641..1e743548e0 100644
--- a/runtime/binding-sse/pom.xml
+++ b/runtime/binding-sse/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-tcp/pom.xml b/runtime/binding-tcp/pom.xml
index be696937b9..805414f530 100644
--- a/runtime/binding-tcp/pom.xml
+++ b/runtime/binding-tcp/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-tls/pom.xml b/runtime/binding-tls/pom.xml
index b34236e70d..23194aefe7 100644
--- a/runtime/binding-tls/pom.xml
+++ b/runtime/binding-tls/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/binding-ws/pom.xml b/runtime/binding-ws/pom.xml
index 84f190e598..88849eff22 100644
--- a/runtime/binding-ws/pom.xml
+++ b/runtime/binding-ws/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/catalog-apicurio/pom.xml b/runtime/catalog-apicurio/pom.xml
index 22a4144c16..6f134f710c 100644
--- a/runtime/catalog-apicurio/pom.xml
+++ b/runtime/catalog-apicurio/pom.xml
@@ -6,7 +6,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/catalog-filesystem/pom.xml b/runtime/catalog-filesystem/pom.xml
index b84133156a..a6d5ba1185 100644
--- a/runtime/catalog-filesystem/pom.xml
+++ b/runtime/catalog-filesystem/pom.xml
@@ -6,7 +6,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/catalog-inline/pom.xml b/runtime/catalog-inline/pom.xml
index ee7b222959..5bb2abc8ea 100644
--- a/runtime/catalog-inline/pom.xml
+++ b/runtime/catalog-inline/pom.xml
@@ -6,7 +6,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/catalog-karapace/pom.xml b/runtime/catalog-karapace/pom.xml
index 97e6ae27ae..4f1bc2a0cc 100644
--- a/runtime/catalog-karapace/pom.xml
+++ b/runtime/catalog-karapace/pom.xml
@@ -6,7 +6,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/catalog-schema-registry/pom.xml b/runtime/catalog-schema-registry/pom.xml
index 319b69c774..90caa6f0db 100644
--- a/runtime/catalog-schema-registry/pom.xml
+++ b/runtime/catalog-schema-registry/pom.xml
@@ -6,7 +6,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/command-metrics/pom.xml b/runtime/command-metrics/pom.xml
index 04f7864263..4e5c871912 100644
--- a/runtime/command-metrics/pom.xml
+++ b/runtime/command-metrics/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/command-start/pom.xml b/runtime/command-start/pom.xml
index 8b98acdfc8..ec791471f9 100644
--- a/runtime/command-start/pom.xml
+++ b/runtime/command-start/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/command-stop/pom.xml b/runtime/command-stop/pom.xml
index 2686e756c5..f9b6fc78a5 100644
--- a/runtime/command-stop/pom.xml
+++ b/runtime/command-stop/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/command-version/pom.xml b/runtime/command-version/pom.xml
index b7b31f2153..25f5d3840f 100644
--- a/runtime/command-version/pom.xml
+++ b/runtime/command-version/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/command/pom.xml b/runtime/command/pom.xml
index e673eae8a6..9038b1a46a 100644
--- a/runtime/command/pom.xml
+++ b/runtime/command/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/common/pom.xml b/runtime/common/pom.xml
index 628d3162c7..8811466d87 100644
--- a/runtime/common/pom.xml
+++ b/runtime/common/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/engine/pom.xml b/runtime/engine/pom.xml
index 6048017d99..948bedcc03 100644
--- a/runtime/engine/pom.xml
+++ b/runtime/engine/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/exporter-otlp/pom.xml b/runtime/exporter-otlp/pom.xml
index 12a0544f6e..395d3389b8 100644
--- a/runtime/exporter-otlp/pom.xml
+++ b/runtime/exporter-otlp/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/exporter-prometheus/pom.xml b/runtime/exporter-prometheus/pom.xml
index 6be180e600..92b7ffaa9d 100644
--- a/runtime/exporter-prometheus/pom.xml
+++ b/runtime/exporter-prometheus/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/exporter-stdout/pom.xml b/runtime/exporter-stdout/pom.xml
index 29c29b8aa3..3d7a5a654d 100644
--- a/runtime/exporter-stdout/pom.xml
+++ b/runtime/exporter-stdout/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/filesystem-http/pom.xml b/runtime/filesystem-http/pom.xml
index 9bab57bdb5..88e1f62671 100644
--- a/runtime/filesystem-http/pom.xml
+++ b/runtime/filesystem-http/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/guard-jwt/pom.xml b/runtime/guard-jwt/pom.xml
index afc9802559..4908833d4d 100644
--- a/runtime/guard-jwt/pom.xml
+++ b/runtime/guard-jwt/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/metrics-grpc/pom.xml b/runtime/metrics-grpc/pom.xml
index cc76d4ffd3..bb896b0daf 100644
--- a/runtime/metrics-grpc/pom.xml
+++ b/runtime/metrics-grpc/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/metrics-http/pom.xml b/runtime/metrics-http/pom.xml
index 5e54ddd369..dfb6cf3dc9 100644
--- a/runtime/metrics-http/pom.xml
+++ b/runtime/metrics-http/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/metrics-stream/pom.xml b/runtime/metrics-stream/pom.xml
index 3797a07cf3..e6afd9f9b7 100644
--- a/runtime/metrics-stream/pom.xml
+++ b/runtime/metrics-stream/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/model-avro/pom.xml b/runtime/model-avro/pom.xml
index 87bf728b91..80153b67dd 100644
--- a/runtime/model-avro/pom.xml
+++ b/runtime/model-avro/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/model-core/pom.xml b/runtime/model-core/pom.xml
index a339c058f6..df261a6626 100644
--- a/runtime/model-core/pom.xml
+++ b/runtime/model-core/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/model-json/pom.xml b/runtime/model-json/pom.xml
index e160617d55..b613949e66 100644
--- a/runtime/model-json/pom.xml
+++ b/runtime/model-json/pom.xml
@@ -6,7 +6,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/model-protobuf/pom.xml b/runtime/model-protobuf/pom.xml
index 12ca2db469..6735ddfb4e 100644
--- a/runtime/model-protobuf/pom.xml
+++ b/runtime/model-protobuf/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/pom.xml b/runtime/pom.xml
index 5ffe088ab2..e0e5c0d4f7 100644
--- a/runtime/pom.xml
+++ b/runtime/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
zilla
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/resolver-env/pom.xml b/runtime/resolver-env/pom.xml
index f1c0282e9e..073fea227a 100644
--- a/runtime/resolver-env/pom.xml
+++ b/runtime/resolver-env/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/runtime/vault-filesystem/pom.xml b/runtime/vault-filesystem/pom.xml
index 692d3d47c7..65c886f00c 100644
--- a/runtime/vault-filesystem/pom.xml
+++ b/runtime/vault-filesystem/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
runtime
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-asyncapi.spec/pom.xml b/specs/binding-asyncapi.spec/pom.xml
index d06094f8b0..c74bcf97b9 100644
--- a/specs/binding-asyncapi.spec/pom.xml
+++ b/specs/binding-asyncapi.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-echo.spec/pom.xml b/specs/binding-echo.spec/pom.xml
index 1d670cb207..496a252c15 100644
--- a/specs/binding-echo.spec/pom.xml
+++ b/specs/binding-echo.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-fan.spec/pom.xml b/specs/binding-fan.spec/pom.xml
index e958766e7c..ba54ba9945 100644
--- a/specs/binding-fan.spec/pom.xml
+++ b/specs/binding-fan.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-filesystem.spec/pom.xml b/specs/binding-filesystem.spec/pom.xml
index 658acdc779..3e1a875cdf 100644
--- a/specs/binding-filesystem.spec/pom.xml
+++ b/specs/binding-filesystem.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-grpc-kafka.spec/pom.xml b/specs/binding-grpc-kafka.spec/pom.xml
index 03dbcf18aa..2eddc537fc 100644
--- a/specs/binding-grpc-kafka.spec/pom.xml
+++ b/specs/binding-grpc-kafka.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-grpc.spec/pom.xml b/specs/binding-grpc.spec/pom.xml
index caedaf2765..12cab7a480 100644
--- a/specs/binding-grpc.spec/pom.xml
+++ b/specs/binding-grpc.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-http-filesystem.spec/pom.xml b/specs/binding-http-filesystem.spec/pom.xml
index f913b91f87..d039f7349a 100644
--- a/specs/binding-http-filesystem.spec/pom.xml
+++ b/specs/binding-http-filesystem.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-http-kafka.spec/pom.xml b/specs/binding-http-kafka.spec/pom.xml
index 871e81f544..fc888b9872 100644
--- a/specs/binding-http-kafka.spec/pom.xml
+++ b/specs/binding-http-kafka.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-http.spec/pom.xml b/specs/binding-http.spec/pom.xml
index 6cecaabc2d..ddd804dd06 100644
--- a/specs/binding-http.spec/pom.xml
+++ b/specs/binding-http.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-kafka-grpc.spec/pom.xml b/specs/binding-kafka-grpc.spec/pom.xml
index 96e689aa78..8f4c4cfbd6 100644
--- a/specs/binding-kafka-grpc.spec/pom.xml
+++ b/specs/binding-kafka-grpc.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-kafka.spec/pom.xml b/specs/binding-kafka.spec/pom.xml
index 21e53f8b6c..104641141b 100644
--- a/specs/binding-kafka.spec/pom.xml
+++ b/specs/binding-kafka.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-mqtt-kafka.spec/pom.xml b/specs/binding-mqtt-kafka.spec/pom.xml
index 1ee013e8ae..228504dc40 100644
--- a/specs/binding-mqtt-kafka.spec/pom.xml
+++ b/specs/binding-mqtt-kafka.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-mqtt.spec/pom.xml b/specs/binding-mqtt.spec/pom.xml
index d265d955b7..1c0658c32e 100644
--- a/specs/binding-mqtt.spec/pom.xml
+++ b/specs/binding-mqtt.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-openapi-asyncapi.spec/pom.xml b/specs/binding-openapi-asyncapi.spec/pom.xml
index 94f3d851f2..94be41daad 100644
--- a/specs/binding-openapi-asyncapi.spec/pom.xml
+++ b/specs/binding-openapi-asyncapi.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-openapi.spec/pom.xml b/specs/binding-openapi.spec/pom.xml
index 6d846b2711..f88af0391f 100644
--- a/specs/binding-openapi.spec/pom.xml
+++ b/specs/binding-openapi.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-proxy.spec/pom.xml b/specs/binding-proxy.spec/pom.xml
index a7b1b2885a..399938ebaf 100644
--- a/specs/binding-proxy.spec/pom.xml
+++ b/specs/binding-proxy.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-sse-kafka.spec/pom.xml b/specs/binding-sse-kafka.spec/pom.xml
index 45d3893762..d0de638417 100644
--- a/specs/binding-sse-kafka.spec/pom.xml
+++ b/specs/binding-sse-kafka.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-sse.spec/pom.xml b/specs/binding-sse.spec/pom.xml
index c0325cbb59..8389712f46 100644
--- a/specs/binding-sse.spec/pom.xml
+++ b/specs/binding-sse.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-tcp.spec/pom.xml b/specs/binding-tcp.spec/pom.xml
index 9b648b6f3f..d5941636e1 100644
--- a/specs/binding-tcp.spec/pom.xml
+++ b/specs/binding-tcp.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-tls.spec/pom.xml b/specs/binding-tls.spec/pom.xml
index c6f545ee78..6fc8882a15 100644
--- a/specs/binding-tls.spec/pom.xml
+++ b/specs/binding-tls.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/binding-ws.spec/pom.xml b/specs/binding-ws.spec/pom.xml
index b48c19c8fb..5b8d0f0803 100644
--- a/specs/binding-ws.spec/pom.xml
+++ b/specs/binding-ws.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/catalog-apicurio.spec/pom.xml b/specs/catalog-apicurio.spec/pom.xml
index 00def73d78..b4f9758232 100644
--- a/specs/catalog-apicurio.spec/pom.xml
+++ b/specs/catalog-apicurio.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/catalog-filesystem.spec/pom.xml b/specs/catalog-filesystem.spec/pom.xml
index a1eababef0..2a5079a8ec 100644
--- a/specs/catalog-filesystem.spec/pom.xml
+++ b/specs/catalog-filesystem.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/catalog-inline.spec/pom.xml b/specs/catalog-inline.spec/pom.xml
index 7660cdc502..bb6d73e82d 100644
--- a/specs/catalog-inline.spec/pom.xml
+++ b/specs/catalog-inline.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/catalog-karapace.spec/pom.xml b/specs/catalog-karapace.spec/pom.xml
index 181f306deb..392413f2ad 100644
--- a/specs/catalog-karapace.spec/pom.xml
+++ b/specs/catalog-karapace.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/catalog-schema-registry.spec/pom.xml b/specs/catalog-schema-registry.spec/pom.xml
index 9a8a541641..fd2bcb98a3 100644
--- a/specs/catalog-schema-registry.spec/pom.xml
+++ b/specs/catalog-schema-registry.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/engine.spec/pom.xml b/specs/engine.spec/pom.xml
index b32017696e..6aa323d0ba 100644
--- a/specs/engine.spec/pom.xml
+++ b/specs/engine.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/exporter-otlp.spec/pom.xml b/specs/exporter-otlp.spec/pom.xml
index 3de4da33e8..50f6150cd0 100644
--- a/specs/exporter-otlp.spec/pom.xml
+++ b/specs/exporter-otlp.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/exporter-prometheus.spec/pom.xml b/specs/exporter-prometheus.spec/pom.xml
index d1a2fbc17c..ccf6e1d48b 100644
--- a/specs/exporter-prometheus.spec/pom.xml
+++ b/specs/exporter-prometheus.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/exporter-stdout.spec/pom.xml b/specs/exporter-stdout.spec/pom.xml
index 18b1557673..ff68ca390e 100644
--- a/specs/exporter-stdout.spec/pom.xml
+++ b/specs/exporter-stdout.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/filesystem-http.spec/pom.xml b/specs/filesystem-http.spec/pom.xml
index d3791991be..e243ac8287 100644
--- a/specs/filesystem-http.spec/pom.xml
+++ b/specs/filesystem-http.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/guard-jwt.spec/pom.xml b/specs/guard-jwt.spec/pom.xml
index 92ddafd962..818922a8e8 100644
--- a/specs/guard-jwt.spec/pom.xml
+++ b/specs/guard-jwt.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/metrics-grpc.spec/pom.xml b/specs/metrics-grpc.spec/pom.xml
index 3b61460c34..684a2b1eef 100644
--- a/specs/metrics-grpc.spec/pom.xml
+++ b/specs/metrics-grpc.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/metrics-http.spec/pom.xml b/specs/metrics-http.spec/pom.xml
index c167c0d929..9257c325f5 100644
--- a/specs/metrics-http.spec/pom.xml
+++ b/specs/metrics-http.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/metrics-stream.spec/pom.xml b/specs/metrics-stream.spec/pom.xml
index 4b8c5a824b..3af1212c9f 100644
--- a/specs/metrics-stream.spec/pom.xml
+++ b/specs/metrics-stream.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/model-avro.spec/pom.xml b/specs/model-avro.spec/pom.xml
index fd73e029b7..7ce0cc78bb 100644
--- a/specs/model-avro.spec/pom.xml
+++ b/specs/model-avro.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/model-core.spec/pom.xml b/specs/model-core.spec/pom.xml
index 0ad8c3c55a..c25c332734 100644
--- a/specs/model-core.spec/pom.xml
+++ b/specs/model-core.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/model-json.spec/pom.xml b/specs/model-json.spec/pom.xml
index 10c8ce9306..bca6097721 100644
--- a/specs/model-json.spec/pom.xml
+++ b/specs/model-json.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/model-protobuf.spec/pom.xml b/specs/model-protobuf.spec/pom.xml
index eeec3f4b7b..ec399153be 100644
--- a/specs/model-protobuf.spec/pom.xml
+++ b/specs/model-protobuf.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/pom.xml b/specs/pom.xml
index fd64db3db4..bd2386f3e9 100644
--- a/specs/pom.xml
+++ b/specs/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
zilla
- 0.9.97
+ 0.9.98
../pom.xml
diff --git a/specs/vault-filesystem.spec/pom.xml b/specs/vault-filesystem.spec/pom.xml
index cf14664e05..09bd8a7b86 100644
--- a/specs/vault-filesystem.spec/pom.xml
+++ b/specs/vault-filesystem.spec/pom.xml
@@ -8,7 +8,7 @@
io.aklivity.zilla
specs
- 0.9.97
+ 0.9.98
../pom.xml