You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gi...@apache.org on 2024/01/11 04:01:36 UTC

(camel-quarkus) branch quarkus-main updated (5f934ea5f9 -> aa23de47e5)

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a change to branch quarkus-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


 discard 5f934ea5f9 Exclude redundant kubernetes-client dependencies
 discard 63efe7f3a0 Revert "Set io.netty.tryReflectionSetAccessible=false for jfr & google-bigquery native modules #5603"
 discard acd2a24309 Workaround BigQuery & Apache Arrow Netty imcompatibilities #5641
 discard 8d774b6d8e Workaround openstack4j incompatibility with Jackson 2.16.x #5604
 discard 81ff5c1fcf Upgrade Quarkus to 3.7.0.CR1
     add 27ce15dd46 Clean up remaining reference to deprecated quarkus.opentelemetry config
     new fe8cd68687 Upgrade Quarkus to 3.7.0.CR1
     new 5c2044c22b Workaround openstack4j incompatibility with Jackson 2.16.x #5604
     new 33b788df62 Workaround BigQuery & Apache Arrow Netty imcompatibilities #5641
     new 76dcf6014b Revert "Set io.netty.tryReflectionSetAccessible=false for jfr & google-bigquery native modules #5603"
     new aa23de47e5 Exclude redundant kubernetes-client dependencies

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (5f934ea5f9)
            \
             N -- N -- N   refs/heads/quarkus-main (aa23de47e5)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../component/opentelemetry/deployment/OpenTelemetryDisabledTest.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


(camel-quarkus) 04/05: Revert "Set io.netty.tryReflectionSetAccessible=false for jfr & google-bigquery native modules #5603"

Posted by gi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch quarkus-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 76dcf6014b2383836c5702c7bd4291a89cb0b1c4
Author: James Netherton <ja...@gmail.com>
AuthorDate: Tue Jan 9 07:42:58 2024 +0000

    Revert "Set io.netty.tryReflectionSetAccessible=false for jfr & google-bigquery native modules #5603"
    
    This reverts commit fe111eebcb11d94695119c4f69870eff00cb9922.
    
    Fixes #5603
---
 .../src/main/resources/application.properties         | 19 -------------------
 .../jfr/src/main/resources/application.properties     |  3 ---
 2 files changed, 22 deletions(-)

diff --git a/integration-tests/google-bigquery/src/main/resources/application.properties b/integration-tests/google-bigquery/src/main/resources/application.properties
deleted file mode 100644
index ef07b35318..0000000000
--- a/integration-tests/google-bigquery/src/main/resources/application.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-## ---------------------------------------------------------------------------
-## Licensed to the Apache Software Foundation (ASF) under one or more
-## contributor license agreements.  See the NOTICE file distributed with
-## this work for additional information regarding copyright ownership.
-## The ASF licenses this file to You under the Apache License, Version 2.0
-## (the "License"); you may not use this file except in compliance with
-## the License.  You may obtain a copy of the License at
-##
-##      http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing, software
-## distributed under the License is distributed on an "AS IS" BASIS,
-## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-## See the License for the specific language governing permissions and
-## limitations under the License.
-## ---------------------------------------------------------------------------
-
-# TODO: https://github.com/apache/camel-quarkus/issues/5603
-quarkus.native.additional-build-args=-Dio.netty.tryReflectionSetAccessible=false
diff --git a/integration-tests/jfr/src/main/resources/application.properties b/integration-tests/jfr/src/main/resources/application.properties
index 813280f78d..7805738045 100644
--- a/integration-tests/jfr/src/main/resources/application.properties
+++ b/integration-tests/jfr/src/main/resources/application.properties
@@ -17,6 +17,3 @@
 
 # Must enable VM inspection for JFR in native mode
 quarkus.native.monitoring=jfr
-
-# TODO: https://github.com/apache/camel-quarkus/issues/5603
-quarkus.native.additional-build-args=-Dio.netty.tryReflectionSetAccessible=false


(camel-quarkus) 03/05: Workaround BigQuery & Apache Arrow Netty imcompatibilities #5641

Posted by gi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch quarkus-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 33b788df6297267a608ecc83295d856efad9c49b
Author: James Netherton <ja...@gmail.com>
AuthorDate: Mon Jan 8 14:37:02 2024 +0000

    Workaround BigQuery & Apache Arrow Netty imcompatibilities #5641
---
 .../src/main/java/io/netty/buffer/LargeBuffer.java |  34 ++
 .../io/netty/buffer/MutableWrappedByteBuf.java     | 447 +++++++++++++++++++++
 .../io/netty/buffer/PooledByteBufAllocatorL.java   | 275 +++++++++++++
 .../io/netty/buffer/UnsafeDirectLittleEndian.java  | 261 ++++++++++++
 4 files changed, 1017 insertions(+)

diff --git a/extensions/google-bigquery/runtime/src/main/java/io/netty/buffer/LargeBuffer.java b/extensions/google-bigquery/runtime/src/main/java/io/netty/buffer/LargeBuffer.java
new file mode 100644
index 0000000000..1d81b725b4
--- /dev/null
+++ b/extensions/google-bigquery/runtime/src/main/java/io/netty/buffer/LargeBuffer.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.netty.buffer;
+
+/**
+ * A MutableWrappedByteBuf that also maintains a metric of the number of huge buffer bytes and
+ * counts.
+ */
+public class LargeBuffer extends MutableWrappedByteBuf {
+
+    public LargeBuffer(ByteBuf buffer) {
+        super(buffer);
+    }
+
+    @Override
+    public ByteBuf copy(int index, int length) {
+        return new LargeBuffer(buffer.copy(index, length));
+    }
+}
diff --git a/extensions/google-bigquery/runtime/src/main/java/io/netty/buffer/MutableWrappedByteBuf.java b/extensions/google-bigquery/runtime/src/main/java/io/netty/buffer/MutableWrappedByteBuf.java
new file mode 100644
index 0000000000..2bee1bc509
--- /dev/null
+++ b/extensions/google-bigquery/runtime/src/main/java/io/netty/buffer/MutableWrappedByteBuf.java
@@ -0,0 +1,447 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.netty.buffer;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.channels.FileChannel;
+import java.nio.channels.GatheringByteChannel;
+import java.nio.channels.ScatteringByteChannel;
+
+import io.netty.util.ByteProcessor;
+
+/**
+ * This is basically a complete copy of netty's DuplicatedByteBuf. We copy because we want to override
+ * some behaviors and make buffer mutable.
+ */
+abstract class MutableWrappedByteBuf extends AbstractByteBuf {
+
+    ByteBuf buffer;
+
+    public MutableWrappedByteBuf(ByteBuf buffer) {
+        super(buffer.maxCapacity());
+
+        if (buffer instanceof MutableWrappedByteBuf) {
+            this.buffer = ((MutableWrappedByteBuf) buffer).buffer;
+        } else {
+            this.buffer = buffer;
+        }
+
+        setIndex(buffer.readerIndex(), buffer.writerIndex());
+    }
+
+    @Override
+    public ByteBuffer nioBuffer(int index, int length) {
+        return unwrap().nioBuffer(index, length);
+    }
+
+    @Override
+    public ByteBuf unwrap() {
+        return buffer;
+    }
+
+    @Override
+    public ByteBufAllocator alloc() {
+        return buffer.alloc();
+    }
+
+    @Override
+    public ByteOrder order() {
+        return buffer.order();
+    }
+
+    @Override
+    public boolean isDirect() {
+        return buffer.isDirect();
+    }
+
+    @Override
+    public int capacity() {
+        return buffer.capacity();
+    }
+
+    @Override
+    public ByteBuf capacity(int newCapacity) {
+        buffer.capacity(newCapacity);
+        return this;
+    }
+
+    @Override
+    public boolean hasArray() {
+        return buffer.hasArray();
+    }
+
+    @Override
+    public byte[] array() {
+        return buffer.array();
+    }
+
+    @Override
+    public int arrayOffset() {
+        return buffer.arrayOffset();
+    }
+
+    @Override
+    public boolean hasMemoryAddress() {
+        return buffer.hasMemoryAddress();
+    }
+
+    @Override
+    public long memoryAddress() {
+        return buffer.memoryAddress();
+    }
+
+    @Override
+    public byte getByte(int index) {
+        return _getByte(index);
+    }
+
+    @Override
+    protected byte _getByte(int index) {
+        return buffer.getByte(index);
+    }
+
+    @Override
+    public short getShort(int index) {
+        return _getShort(index);
+    }
+
+    @Override
+    protected short _getShort(int index) {
+        return buffer.getShort(index);
+    }
+
+    @Override
+    public short getShortLE(int index) {
+        return buffer.getShortLE(index);
+    }
+
+    @Override
+    protected short _getShortLE(int index) {
+        return buffer.getShortLE(index);
+    }
+
+    @Override
+    public int getUnsignedMedium(int index) {
+        return _getUnsignedMedium(index);
+    }
+
+    @Override
+    protected int _getUnsignedMedium(int index) {
+        return buffer.getUnsignedMedium(index);
+    }
+
+    @Override
+    public int getUnsignedMediumLE(int index) {
+        return buffer.getUnsignedMediumLE(index);
+    }
+
+    @Override
+    protected int _getUnsignedMediumLE(int index) {
+        return buffer.getUnsignedMediumLE(index);
+    }
+
+    @Override
+    public int getInt(int index) {
+        return _getInt(index);
+    }
+
+    @Override
+    protected int _getInt(int index) {
+        return buffer.getInt(index);
+    }
+
+    @Override
+    public int getIntLE(int index) {
+        return buffer.getIntLE(index);
+    }
+
+    @Override
+    protected int _getIntLE(int index) {
+        return buffer.getIntLE(index);
+    }
+
+    @Override
+    public long getLong(int index) {
+        return _getLong(index);
+    }
+
+    @Override
+    protected long _getLong(int index) {
+        return buffer.getLong(index);
+    }
+
+    @Override
+    public long getLongLE(int index) {
+        return buffer.getLongLE(index);
+    }
+
+    @Override
+    protected long _getLongLE(int index) {
+        return buffer.getLongLE(index);
+    }
+
+    @Override
+    public abstract ByteBuf copy(int index, int length);
+
+    @Override
+    public ByteBuf slice(int index, int length) {
+        return new SlicedByteBuf(this, index, length);
+    }
+
+    @Override
+    public ByteBuf getBytes(int index, ByteBuf dst, int dstIndex, int length) {
+        buffer.getBytes(index, dst, dstIndex, length);
+        return this;
+    }
+
+    @Override
+    public ByteBuf getBytes(int index, byte[] dst, int dstIndex, int length) {
+        buffer.getBytes(index, dst, dstIndex, length);
+        return this;
+    }
+
+    @Override
+    public ByteBuf getBytes(int index, ByteBuffer dst) {
+        buffer.getBytes(index, dst);
+        return this;
+    }
+
+    @Override
+    public ByteBuf setByte(int index, int value) {
+        _setByte(index, value);
+        return this;
+    }
+
+    @Override
+    protected void _setByte(int index, int value) {
+        buffer.setByte(index, value);
+    }
+
+    @Override
+    public ByteBuf setShort(int index, int value) {
+        _setShort(index, value);
+        return this;
+    }
+
+    @Override
+    protected void _setShort(int index, int value) {
+        buffer.setShort(index, value);
+    }
+
+    @Override
+    public ByteBuf setShortLE(int index, int value) {
+        buffer.setShortLE(index, value);
+        return this;
+    }
+
+    @Override
+    protected void _setShortLE(int index, int value) {
+        buffer.setShortLE(index, value);
+    }
+
+    @Override
+    public ByteBuf setMedium(int index, int value) {
+        _setMedium(index, value);
+        return this;
+    }
+
+    @Override
+    protected void _setMedium(int index, int value) {
+        buffer.setMedium(index, value);
+    }
+
+    @Override
+    public ByteBuf setMediumLE(int index, int value) {
+        buffer.setMediumLE(index, value);
+        return this;
+    }
+
+    @Override
+    protected void _setMediumLE(int index, int value) {
+        buffer.setMediumLE(index, value);
+    }
+
+    @Override
+    public ByteBuf setInt(int index, int value) {
+        _setInt(index, value);
+        return this;
+    }
+
+    @Override
+    protected void _setInt(int index, int value) {
+        buffer.setInt(index, value);
+    }
+
+    @Override
+    public ByteBuf setIntLE(int index, int value) {
+        buffer.setIntLE(index, value);
+        return this;
+    }
+
+    @Override
+    protected void _setIntLE(int index, int value) {
+        buffer.setIntLE(index, value);
+    }
+
+    @Override
+    public ByteBuf setLong(int index, long value) {
+        _setLong(index, value);
+        return this;
+    }
+
+    @Override
+    protected void _setLong(int index, long value) {
+        buffer.setLong(index, value);
+    }
+
+    @Override
+    public ByteBuf setLongLE(int index, long value) {
+        buffer.setLongLE(index, value);
+        return this;
+    }
+
+    @Override
+    protected void _setLongLE(int index, long value) {
+        buffer.setLongLE(index, value);
+    }
+
+    @Override
+    public ByteBuf setBytes(int index, byte[] src, int srcIndex, int length) {
+        buffer.setBytes(index, src, srcIndex, length);
+        return this;
+    }
+
+    @Override
+    public ByteBuf setBytes(int index, ByteBuf src, int srcIndex, int length) {
+        buffer.setBytes(index, src, srcIndex, length);
+        return this;
+    }
+
+    @Override
+    public ByteBuf setBytes(int index, ByteBuffer src) {
+        buffer.setBytes(index, src);
+        return this;
+    }
+
+    @Override
+    public int setBytes(int index, FileChannel in, long position, int length)
+            throws IOException {
+        return buffer.setBytes(index, in, position, length);
+    }
+
+    @Override
+    public ByteBuf getBytes(int index, OutputStream out, int length)
+            throws IOException {
+        buffer.getBytes(index, out, length);
+        return this;
+    }
+
+    @Override
+    public int getBytes(int index, GatheringByteChannel out, int length)
+            throws IOException {
+        return buffer.getBytes(index, out, length);
+    }
+
+    @Override
+    public int setBytes(int index, InputStream in, int length)
+            throws IOException {
+        return buffer.setBytes(index, in, length);
+    }
+
+    @Override
+    public int setBytes(int index, ScatteringByteChannel in, int length)
+            throws IOException {
+        return buffer.setBytes(index, in, length);
+    }
+
+    @Override
+    public int getBytes(int index, FileChannel out, long position, int length)
+            throws IOException {
+        return buffer.getBytes(index, out, position, length);
+    }
+
+    @Override
+    public int nioBufferCount() {
+        return buffer.nioBufferCount();
+    }
+
+    @Override
+    public ByteBuffer[] nioBuffers(int index, int length) {
+        return buffer.nioBuffers(index, length);
+    }
+
+    @Override
+    public ByteBuffer internalNioBuffer(int index, int length) {
+        return nioBuffer(index, length);
+    }
+
+    @Override
+    public int forEachByte(int index, int length, ByteProcessor processor) {
+        return buffer.forEachByte(index, length, processor);
+    }
+
+    @Override
+    public int forEachByteDesc(int index, int length, ByteProcessor processor) {
+        return buffer.forEachByteDesc(index, length, processor);
+    }
+
+    @Override
+    public final int refCnt() {
+        return unwrap().refCnt();
+    }
+
+    @Override
+    public final ByteBuf touch() {
+        unwrap().touch();
+        return this;
+    }
+
+    @Override
+    public final ByteBuf touch(Object hint) {
+        unwrap().touch(hint);
+        return this;
+    }
+
+    @Override
+    public final ByteBuf retain() {
+        unwrap().retain();
+        return this;
+    }
+
+    @Override
+    public final ByteBuf retain(int increment) {
+        unwrap().retain(increment);
+        return this;
+    }
+
+    @Override
+    public boolean release() {
+        return release(1);
+    }
+
+    @Override
+    public boolean release(int decrement) {
+        boolean released = unwrap().release(decrement);
+        return released;
+    }
+
+}
diff --git a/extensions/google-bigquery/runtime/src/main/java/io/netty/buffer/PooledByteBufAllocatorL.java b/extensions/google-bigquery/runtime/src/main/java/io/netty/buffer/PooledByteBufAllocatorL.java
new file mode 100644
index 0000000000..16025d8655
--- /dev/null
+++ b/extensions/google-bigquery/runtime/src/main/java/io/netty/buffer/PooledByteBufAllocatorL.java
@@ -0,0 +1,275 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.netty.buffer;
+
+import java.lang.reflect.Field;
+import java.nio.ByteBuffer;
+import java.util.concurrent.atomic.AtomicLong;
+
+import io.netty.util.internal.OutOfDirectMemoryError;
+import io.netty.util.internal.StringUtil;
+import org.apache.arrow.memory.OutOfMemoryException;
+import org.apache.arrow.memory.util.LargeMemoryUtil;
+
+import static org.apache.arrow.memory.util.AssertionUtil.ASSERT_ENABLED;
+
+/**
+ * The base allocator that we use for all of Arrow's memory management. Returns
+ * UnsafeDirectLittleEndian buffers.
+ */
+public class PooledByteBufAllocatorL {
+
+    private static final org.slf4j.Logger memoryLogger = org.slf4j.LoggerFactory.getLogger("arrow.allocator");
+
+    private static final int MEMORY_LOGGER_FREQUENCY_SECONDS = 60;
+    public final UnsafeDirectLittleEndian empty;
+    private final AtomicLong hugeBufferSize = new AtomicLong(0);
+    private final AtomicLong hugeBufferCount = new AtomicLong(0);
+    private final AtomicLong normalBufferSize = new AtomicLong(0);
+    private final AtomicLong normalBufferCount = new AtomicLong(0);
+    private final InnerAllocator allocator;
+
+    public PooledByteBufAllocatorL() {
+        allocator = new InnerAllocator();
+        empty = new UnsafeDirectLittleEndian(new DuplicatedByteBuf(Unpooled.EMPTY_BUFFER));
+    }
+
+    /**
+     * Returns a {@linkplain io.netty.buffer.UnsafeDirectLittleEndian} of the given size.
+     */
+    public UnsafeDirectLittleEndian allocate(long size) {
+        try {
+            return allocator.directBuffer(LargeMemoryUtil.checkedCastToInt(size), Integer.MAX_VALUE);
+        } catch (OutOfMemoryError e) {
+            /*
+             * OutOfDirectMemoryError is thrown by Netty when we exceed the direct memory limit defined by
+             * -XX:MaxDirectMemorySize. OutOfMemoryError with "Direct buffer memory" message is thrown by
+             * java.nio.Bits when we exceed the direct memory limit. This should never be hit in practice
+             * as Netty is expected to throw an OutOfDirectMemoryError first.
+             */
+            if (e instanceof OutOfDirectMemoryError || "Direct buffer memory".equals(e.getMessage())) {
+                throw new OutOfMemoryException("Failure allocating buffer.", e);
+            }
+            throw e;
+        }
+    }
+
+    public int getChunkSize() {
+        return allocator.chunkSize();
+    }
+
+    public long getHugeBufferSize() {
+        return hugeBufferSize.get();
+    }
+
+    public long getHugeBufferCount() {
+        return hugeBufferCount.get();
+    }
+
+    public long getNormalBufferSize() {
+        return normalBufferSize.get();
+    }
+
+    public long getNormalBufferCount() {
+        return normalBufferSize.get();
+    }
+
+    private static class AccountedUnsafeDirectLittleEndian extends UnsafeDirectLittleEndian {
+
+        private final long initialCapacity;
+        private final AtomicLong count;
+        private final AtomicLong size;
+
+        private AccountedUnsafeDirectLittleEndian(LargeBuffer buf, AtomicLong count, AtomicLong size) {
+            super(buf);
+            this.initialCapacity = buf.capacity();
+            this.count = count;
+            this.size = size;
+        }
+
+        private AccountedUnsafeDirectLittleEndian(PooledUnsafeDirectByteBuf buf, AtomicLong count,
+                AtomicLong size) {
+            super(buf);
+            this.initialCapacity = buf.capacity();
+            this.count = count;
+            this.size = size;
+        }
+
+        @Override
+        public ByteBuf copy() {
+            throw new UnsupportedOperationException("copy method is not supported");
+        }
+
+        @Override
+        public ByteBuf copy(int index, int length) {
+            throw new UnsupportedOperationException("copy method is not supported");
+        }
+
+        @Override
+        public boolean release(int decrement) {
+            boolean released = super.release(decrement);
+            if (released) {
+                count.decrementAndGet();
+                size.addAndGet(-initialCapacity);
+            }
+            return released;
+        }
+
+    }
+
+    private class InnerAllocator extends PooledByteBufAllocator {
+
+        private final PoolArena<ByteBuffer>[] directArenas;
+        private final MemoryStatusThread statusThread;
+
+        public InnerAllocator() {
+            super(true);
+
+            try {
+                Field f = PooledByteBufAllocator.class.getDeclaredField("directArenas");
+                f.setAccessible(true);
+                this.directArenas = (PoolArena<ByteBuffer>[]) f.get(this);
+            } catch (Exception e) {
+                throw new RuntimeException("Failure while initializing allocator.  Unable to retrieve direct arenas field.", e);
+            }
+
+            if (memoryLogger.isTraceEnabled()) {
+                statusThread = new MemoryStatusThread(this);
+                statusThread.start();
+            } else {
+                statusThread = null;
+            }
+        }
+
+        private UnsafeDirectLittleEndian newDirectBufferL(int initialCapacity, int maxCapacity) {
+            PoolThreadCache cache = threadCache();
+            PoolArena<ByteBuffer> directArena = cache.directArena;
+
+            if (directArena != null) {
+
+                if (initialCapacity > chunkSize()) {
+                    // This is beyond chunk size so we'll allocate separately.
+                    ByteBuf buf = UnpooledByteBufAllocator.DEFAULT.directBuffer(initialCapacity, maxCapacity);
+
+                    hugeBufferSize.addAndGet(buf.capacity());
+                    hugeBufferCount.incrementAndGet();
+
+                    // logger.debug("Allocating huge buffer of size {}", initialCapacity, new Exception());
+                    return new AccountedUnsafeDirectLittleEndian(new LargeBuffer(buf), hugeBufferCount,
+                            hugeBufferSize);
+                } else {
+                    // within chunk, use arena.
+                    ByteBuf buf = directArena.allocate(cache, initialCapacity, maxCapacity);
+                    if (!(buf instanceof PooledUnsafeDirectByteBuf)) {
+                        fail();
+                    }
+
+                    if (!ASSERT_ENABLED) {
+                        return new UnsafeDirectLittleEndian((PooledUnsafeDirectByteBuf) buf);
+                    }
+
+                    normalBufferSize.addAndGet(buf.capacity());
+                    normalBufferCount.incrementAndGet();
+
+                    return new AccountedUnsafeDirectLittleEndian((PooledUnsafeDirectByteBuf) buf,
+                            normalBufferCount, normalBufferSize);
+                }
+
+            } else {
+                throw fail();
+            }
+        }
+
+        private UnsupportedOperationException fail() {
+            return new UnsupportedOperationException(
+                    "Arrow requires that the JVM used supports access sun.misc.Unsafe.  This platform " +
+                            "didn't provide that functionality.");
+        }
+
+        @Override
+        public UnsafeDirectLittleEndian directBuffer(int initialCapacity, int maxCapacity) {
+            if (initialCapacity == 0 && maxCapacity == 0) {
+                newDirectBuffer(initialCapacity, maxCapacity);
+            }
+            validate(initialCapacity, maxCapacity);
+            return newDirectBufferL(initialCapacity, maxCapacity);
+        }
+
+        @Override
+        public ByteBuf heapBuffer(int initialCapacity, int maxCapacity) {
+            throw new UnsupportedOperationException("Arrow doesn't support using heap buffers.");
+        }
+
+        private void validate(int initialCapacity, int maxCapacity) {
+            if (initialCapacity < 0) {
+                throw new IllegalArgumentException("initialCapacity: " + initialCapacity + " (expected: 0+)");
+            }
+            if (initialCapacity > maxCapacity) {
+                throw new IllegalArgumentException(String.format(
+                        "initialCapacity: %d (expected: not greater than maxCapacity(%d)",
+                        initialCapacity, maxCapacity));
+            }
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder buf = new StringBuilder();
+            buf.append(directArenas.length);
+            buf.append(" direct arena(s):");
+            buf.append(StringUtil.NEWLINE);
+            for (PoolArena<ByteBuffer> a : directArenas) {
+                buf.append(a);
+            }
+
+            buf.append("Large buffers outstanding: ");
+            buf.append(hugeBufferCount.get());
+            buf.append(" totaling ");
+            buf.append(hugeBufferSize.get());
+            buf.append(" bytes.");
+            buf.append('\n');
+            buf.append("Normal buffers outstanding: ");
+            buf.append(normalBufferCount.get());
+            buf.append(" totaling ");
+            buf.append(normalBufferSize.get());
+            buf.append(" bytes.");
+            return buf.toString();
+        }
+
+        private class MemoryStatusThread extends Thread {
+            private final InnerAllocator allocator;
+
+            public MemoryStatusThread(InnerAllocator allocator) {
+                super("allocation.logger");
+                this.setDaemon(true);
+                this.allocator = allocator;
+            }
+
+            @Override
+            public void run() {
+                while (true) {
+                    memoryLogger.trace("Memory Usage: \n{}", allocator);
+                    try {
+                        Thread.sleep(MEMORY_LOGGER_FREQUENCY_SECONDS * 1000);
+                    } catch (InterruptedException e) {
+                        return;
+                    }
+                }
+            }
+        }
+
+    }
+}
diff --git a/extensions/google-bigquery/runtime/src/main/java/io/netty/buffer/UnsafeDirectLittleEndian.java b/extensions/google-bigquery/runtime/src/main/java/io/netty/buffer/UnsafeDirectLittleEndian.java
new file mode 100644
index 0000000000..07f0685bc9
--- /dev/null
+++ b/extensions/google-bigquery/runtime/src/main/java/io/netty/buffer/UnsafeDirectLittleEndian.java
@@ -0,0 +1,261 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.netty.buffer;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.ByteOrder;
+import java.util.concurrent.atomic.AtomicLong;
+
+import io.netty.util.internal.PlatformDependent;
+
+/**
+ * The underlying class we use for little-endian access to memory. Is used underneath ArrowBufs
+ * to abstract away the
+ * Netty classes and underlying Netty memory management.
+ */
+public class UnsafeDirectLittleEndian extends WrappedByteBuf {
+    private static final AtomicLong ID_GENERATOR = new AtomicLong(0);
+    public final long id = ID_GENERATOR.incrementAndGet();
+    private final AbstractByteBuf wrapped;
+    private final long memoryAddress;
+
+    UnsafeDirectLittleEndian(DuplicatedByteBuf buf) {
+        this(buf, true);
+    }
+
+    UnsafeDirectLittleEndian(LargeBuffer buf) {
+        this(buf, true);
+    }
+
+    UnsafeDirectLittleEndian(PooledUnsafeDirectByteBuf buf) {
+        this(buf, true);
+    }
+
+    private UnsafeDirectLittleEndian(AbstractByteBuf buf, boolean fake) {
+        super(buf);
+
+        this.wrapped = buf;
+        this.memoryAddress = buf.memoryAddress();
+    }
+
+    private long addr(int index) {
+        return memoryAddress + index;
+    }
+
+    @Override
+    public long getLong(int index) {
+        // wrapped.checkIndex(index, 8);
+        long v = PlatformDependent.getLong(addr(index));
+        return v;
+    }
+
+    @Override
+    public float getFloat(int index) {
+        return Float.intBitsToFloat(getInt(index));
+    }
+
+    @Override
+    public ByteBuf slice() {
+        return slice(this.readerIndex(), readableBytes());
+    }
+
+    @Override
+    public ByteBuf slice(int index, int length) {
+        return new SlicedByteBuf(this, index, length);
+    }
+
+    @Override
+    public ByteBuf order(ByteOrder endianness) {
+        return this;
+    }
+
+    @Override
+    public double getDouble(int index) {
+        return Double.longBitsToDouble(getLong(index));
+    }
+
+    @Override
+    public char getChar(int index) {
+        return (char) getShort(index);
+    }
+
+    @Override
+    public long getUnsignedInt(int index) {
+        return getInt(index) & 0xFFFFFFFFL;
+    }
+
+    @Override
+    public int getInt(int index) {
+        int v = PlatformDependent.getInt(addr(index));
+        return v;
+    }
+
+    @Override
+    public int getUnsignedShort(int index) {
+        return getShort(index) & 0xFFFF;
+    }
+
+    @Override
+    public short getShort(int index) {
+        short v = PlatformDependent.getShort(addr(index));
+        return v;
+    }
+
+    @Override
+    public ByteBuf setShort(int index, int value) {
+        wrapped.checkIndex(index, 2);
+        setShort_(index, value);
+        return this;
+    }
+
+    @Override
+    public ByteBuf setInt(int index, int value) {
+        wrapped.checkIndex(index, 4);
+        setInt_(index, value);
+        return this;
+    }
+
+    @Override
+    public ByteBuf setLong(int index, long value) {
+        wrapped.checkIndex(index, 8);
+        setLong_(index, value);
+        return this;
+    }
+
+    @Override
+    public ByteBuf setChar(int index, int value) {
+        setShort(index, value);
+        return this;
+    }
+
+    @Override
+    public ByteBuf setFloat(int index, float value) {
+        setInt(index, Float.floatToRawIntBits(value));
+        return this;
+    }
+
+    @Override
+    public ByteBuf setDouble(int index, double value) {
+        setLong(index, Double.doubleToRawLongBits(value));
+        return this;
+    }
+
+    @Override
+    public ByteBuf writeShort(int value) {
+        wrapped.ensureWritable(2);
+        setShort_(wrapped.writerIndex, value);
+        wrapped.writerIndex += 2;
+        return this;
+    }
+
+    @Override
+    public ByteBuf writeInt(int value) {
+        wrapped.ensureWritable(4);
+        setInt_(wrapped.writerIndex, value);
+        wrapped.writerIndex += 4;
+        return this;
+    }
+
+    @Override
+    public ByteBuf writeLong(long value) {
+        wrapped.ensureWritable(8);
+        setLong_(wrapped.writerIndex, value);
+        wrapped.writerIndex += 8;
+        return this;
+    }
+
+    @Override
+    public ByteBuf writeChar(int value) {
+        writeShort(value);
+        return this;
+    }
+
+    @Override
+    public ByteBuf writeFloat(float value) {
+        writeInt(Float.floatToRawIntBits(value));
+        return this;
+    }
+
+    @Override
+    public ByteBuf writeDouble(double value) {
+        writeLong(Double.doubleToRawLongBits(value));
+        return this;
+    }
+
+    private void setShort_(int index, int value) {
+        PlatformDependent.putShort(addr(index), (short) value);
+    }
+
+    private void setInt_(int index, int value) {
+        PlatformDependent.putInt(addr(index), value);
+    }
+
+    private void setLong_(int index, long value) {
+        PlatformDependent.putLong(addr(index), value);
+    }
+
+    @Override
+    public byte getByte(int index) {
+        return PlatformDependent.getByte(addr(index));
+    }
+
+    @Override
+    public ByteBuf setByte(int index, int value) {
+        PlatformDependent.putByte(addr(index), (byte) value);
+        return this;
+    }
+
+    @Override
+    public boolean release() {
+        return release(1);
+    }
+
+    @Override
+    public int setBytes(int index, InputStream in, int length) throws IOException {
+        wrapped.checkIndex(index, length);
+        byte[] tmp = new byte[length];
+        int readBytes = in.read(tmp);
+        if (readBytes > 0) {
+            PlatformDependent.copyMemory(tmp, 0, addr(index), readBytes);
+        }
+        return readBytes;
+    }
+
+    @Override
+    public ByteBuf getBytes(int index, OutputStream out, int length) throws IOException {
+        wrapped.checkIndex(index, length);
+        if (length != 0) {
+            byte[] tmp = new byte[length];
+            PlatformDependent.copyMemory(addr(index), tmp, 0, length);
+            out.write(tmp);
+        }
+        return this;
+    }
+
+    @Override
+    public int hashCode() {
+        return System.identityHashCode(this);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        return this == obj;
+    }
+}


(camel-quarkus) 01/05: Upgrade Quarkus to 3.7.0.CR1

Posted by gi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch quarkus-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit fe8cd686873c24f40b92b7b9b1411f0a0712f1c0
Author: James Netherton <ja...@gmail.com>
AuthorDate: Fri Nov 24 11:19:53 2023 +0000

    Upgrade Quarkus to 3.7.0.CR1
---
 docs/antora.yml                                              |  2 +-
 .../component/pgevent/deployment/PgeventProcessor.java       |  7 +++++++
 pom.xml                                                      | 12 ++++++------
 poms/bom/src/main/generated/flattened-full-pom.xml           |  8 ++++----
 poms/bom/src/main/generated/flattened-reduced-pom.xml        |  6 +++---
 .../bom/src/main/generated/flattened-reduced-verbose-pom.xml |  6 +++---
 6 files changed, 24 insertions(+), 17 deletions(-)

diff --git a/docs/antora.yml b/docs/antora.yml
index 8a449be96e..9b4afeb1a5 100644
--- a/docs/antora.yml
+++ b/docs/antora.yml
@@ -31,7 +31,7 @@ asciidoc:
     camel-version: 4.3.0 # replace ${camel.version}
     camel-docs-version: next
     camel-quarkus-version: 3.7.0 # replace ${camel-quarkus.version}
-    quarkus-version: 3.6.4 # replace ${quarkus.version}
+    quarkus-version: 999-SNAPSHOT # replace ${quarkus.version}
     graalvm-version: 23.0.1 # replace ${graalvm.version}
     graalvm-docs-version: jdk21 # replace ${graalvm-docs.version}
     mapstruct-version: 1.5.5.Final # replace ${mapstruct.version}
diff --git a/extensions/pgevent/deployment/src/main/java/org/apache/camel/quarkus/component/pgevent/deployment/PgeventProcessor.java b/extensions/pgevent/deployment/src/main/java/org/apache/camel/quarkus/component/pgevent/deployment/PgeventProcessor.java
index fbbec58c71..0e4539c1da 100644
--- a/extensions/pgevent/deployment/src/main/java/org/apache/camel/quarkus/component/pgevent/deployment/PgeventProcessor.java
+++ b/extensions/pgevent/deployment/src/main/java/org/apache/camel/quarkus/component/pgevent/deployment/PgeventProcessor.java
@@ -21,6 +21,7 @@ import java.sql.Driver;
 import java.util.Set;
 import java.util.stream.Stream;
 
+import com.impossibl.postgres.jdbc.PGBuffersStruct;
 import com.impossibl.postgres.system.procs.ProcProvider;
 import io.quarkus.agroal.spi.JdbcDriverBuildItem;
 import io.quarkus.datasource.common.runtime.DatabaseKind;
@@ -29,6 +30,7 @@ import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
 import io.quarkus.deployment.builditem.SslNativeConfigBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ServiceProviderBuildItem;
 import io.quarkus.deployment.util.ServiceUtil;
 
@@ -48,6 +50,11 @@ class PgeventProcessor {
         return ReflectiveClassBuildItem.builder("io.netty.channel.nio.NioEventLoopGroup").fields().build();
     }
 
+    @BuildStep
+    void runtimeInitializedClasses(BuildProducer<RuntimeInitializedClassBuildItem> runtimeInitializedClass) {
+        runtimeInitializedClass.produce(new RuntimeInitializedClassBuildItem(PGBuffersStruct.class.getName()));
+    }
+
     @BuildStep
     void registerNativeImageResources(BuildProducer<ServiceProviderBuildItem> services) {
         Stream.of(
diff --git a/pom.xml b/pom.xml
index 5beebad2cb..e4978feab2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,7 +61,7 @@
         <quarkiverse-mybatis.version>2.2.0</quarkiverse-mybatis.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/mybatis/quarkus-mybatis-parent/ -->
         <quarkiverse-pooled-jms.version>2.3.0</quarkiverse-pooled-jms.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/messaginghub/quarkus-pooled-jms-parent/ -->
         <quarkiverse-tika.version>2.0.2</quarkiverse-tika.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/tika/quarkus-tika-parent/ -->
-        <quarkus.version>3.6.4</quarkus.version><!-- https://repo1.maven.org/maven2/io/quarkus/quarkus-bom/ -->
+        <quarkus.version>999-SNAPSHOT</quarkus.version><!-- https://repo1.maven.org/maven2/io/quarkus/quarkus-bom/ -->
         <quarkus-hazelcast-client.version>4.0.0</quarkus-hazelcast-client.version><!-- https://repo1.maven.org/maven2/com/hazelcast/quarkus-hazelcast-client-bom/ -->
         <quarkus-qpid-jms.version>2.5.0</quarkus-qpid-jms.version><!-- This should be in sync with quarkus-platform https://repo1.maven.org/maven2/org/amqphub/quarkus/quarkus-qpid-jms-bom/ -->
 
@@ -104,7 +104,7 @@
         <graalvm.version>23.0.1</graalvm.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.graalvm.sdk:graal-sdk -->
         <graalvm-docs.version>jdk21</graalvm-docs.version><!-- @sync io.quarkus:quarkus-documentation:${quarkus.version} prop:graal-community.tag-for-documentation -->
         <groovy.version>4.0.17</groovy.version><!-- @sync io.quarkiverse.groovy:quarkus-groovy-parent:${quarkiverse-groovy.version} prop:groovy.version -->
-        <grpc.version>1.59.0</grpc.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:io.grpc:grpc-core -->
+        <grpc.version>1.59.1</grpc.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:io.grpc:grpc-core -->
         <hapi.version>${hapi-version}</hapi.version>
         <hapi-base.version>${hapi-base-version}</hapi-base.version>
         <hapi-fhir.version>${hapi-fhir-version}</hapi-fhir.version>
@@ -114,7 +114,7 @@
         <icu4j.version>${icu4j-version}</icu4j.version>
         <immutables.version>2.9.3</immutables.version>
         <influxdb.version>${influx-java-driver-version}</influxdb.version>
-        <jackson.version>2.15.3</jackson.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:com.fasterxml.jackson.core:jackson-core -->
+        <jackson.version>2.16.1</jackson.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:com.fasterxml.jackson.core:jackson-core -->
         <jakarta.jms-api.version>${jakarta-jms-api-version}</jakarta.jms-api.version>
         <java-json-tools.json-patch.version>${json-patch-version}</java-json-tools.json-patch.version><!-- A replacement for com.github.fge:json-patch -->
         <jodatime.version>${jodatime2-version}</jodatime.version><!-- Mess in transitive dependencies of Splunk -->
@@ -132,7 +132,7 @@
         <json-smart.version>2.4.10</json-smart.version><!-- @sync com.jayway.jsonpath:json-path:${json-path.version} dep:net.minidev:json-smart -->
         <kafka.version>3.6.1</kafka.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.apache.kafka:kafka-clients -->
         <kudu.version>${kudu-version}</kudu.version>
-        <kotlin.version>1.9.21</kotlin.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.jetbrains.kotlin:kotlin-stdlib -->
+        <kotlin.version>1.9.22</kotlin.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.jetbrains.kotlin:kotlin-stdlib -->
         <kryo.version>2.24.0</kryo.version><!-- @sync org.apache.flink:flink-core:${flink-version} dep:com.esotericsoftware.kryo:kryo -->
         <mapstruct.version>${mapstruct-version}</mapstruct.version>
         <minio.version>8.2.2</minio.version><!-- @sync io.quarkiverse.minio:quarkus-minio-parent:${quarkiverse-minio.version} prop:minio.version -->
@@ -143,11 +143,11 @@
         <okio.version>${squareup-okio-version}</okio.version>
         <opencensus.version>0.31.0</opencensus.version><!-- Mess in Google cloud. Keep in sync with version used in com.google.http-client:google-http-client -->
         <perfmark-api.version>0.26.0</perfmark-api.version><!-- @sync io.grpc:grpc-netty-shaded:${grpc.version} dep:io.perfmark:perfmark-api -->
-        <protobuf.version>3.24.4</protobuf.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:com.google.protobuf:protobuf-java -->
+        <protobuf.version>3.25.0</protobuf.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:com.google.protobuf:protobuf-java -->
         <reactor-core.version>3.4.34</reactor-core.version><!-- @sync com.azure:azure-core:${azure-core.version} dep:io.projectreactor:reactor-core -->
         <reactor-netty.version>${reactor-netty-version}</reactor-netty.version>
         <retrofit.version>2.9.0</retrofit.version><!-- @sync org.influxdb:influxdb-java:${influxdb.version} dep:com.squareup.retrofit2:retrofit -->
-        <smallrye.reactive.messaging.camel.version>4.10.2</smallrye.reactive.messaging.camel.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:io.smallrye.reactive:smallrye-reactive-messaging-provider -->
+        <smallrye.reactive.messaging.camel.version>4.15.0</smallrye.reactive.messaging.camel.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:io.smallrye.reactive:smallrye-reactive-messaging-provider -->
         <snakeyaml.version>2.2</snakeyaml.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.yaml:snakeyaml -->
         <snakeyaml-engine.version>${snakeyaml-engine-version}</snakeyaml-engine.version><!-- Resolve conflict between camel-snakeyaml & kubernetes-client -->
         <spring.version>${spring-version}</spring.version>
diff --git a/poms/bom/src/main/generated/flattened-full-pom.xml b/poms/bom/src/main/generated/flattened-full-pom.xml
index a414561932..fdbfbbae44 100644
--- a/poms/bom/src/main/generated/flattened-full-pom.xml
+++ b/poms/bom/src/main/generated/flattened-full-pom.xml
@@ -6333,7 +6333,7 @@
       <dependency>
         <groupId>io.smallrye.reactive</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
         <artifactId>smallrye-reactive-messaging-camel</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
-        <version>4.10.2</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+        <version>4.15.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
       </dependency>
       <dependency>
         <groupId>io.swagger.core.v3</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
@@ -6589,17 +6589,17 @@
       <dependency>
         <groupId>org.jetbrains.kotlin</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
         <artifactId>kotlin-script-util</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
-        <version>1.9.21</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+        <version>1.9.22</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
       </dependency>
       <dependency>
         <groupId>org.jetbrains.kotlin</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
         <artifactId>kotlin-scripting-jvm</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
-        <version>1.9.21</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+        <version>1.9.22</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
       </dependency>
       <dependency>
         <groupId>org.jetbrains.kotlin</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
         <artifactId>kotlin-scripting-jvm-host</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
-        <version>1.9.21</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+        <version>1.9.22</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
       </dependency>
       <dependency>
         <groupId>org.jolokia</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
diff --git a/poms/bom/src/main/generated/flattened-reduced-pom.xml b/poms/bom/src/main/generated/flattened-reduced-pom.xml
index 015c68273f..1c6ff7fb91 100644
--- a/poms/bom/src/main/generated/flattened-reduced-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-pom.xml
@@ -6308,7 +6308,7 @@
       <dependency>
         <groupId>io.smallrye.reactive</groupId>
         <artifactId>smallrye-reactive-messaging-camel</artifactId>
-        <version>4.10.2</version>
+        <version>4.15.0</version>
       </dependency>
       <dependency>
         <groupId>io.swagger.core.v3</groupId>
@@ -6524,12 +6524,12 @@
       <dependency>
         <groupId>org.jetbrains.kotlin</groupId>
         <artifactId>kotlin-scripting-jvm</artifactId>
-        <version>1.9.21</version>
+        <version>1.9.22</version>
       </dependency>
       <dependency>
         <groupId>org.jetbrains.kotlin</groupId>
         <artifactId>kotlin-scripting-jvm-host</artifactId>
-        <version>1.9.21</version>
+        <version>1.9.22</version>
       </dependency>
       <dependency>
         <groupId>org.mapstruct</groupId>
diff --git a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
index e21d1475d4..834e85257c 100644
--- a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
@@ -6308,7 +6308,7 @@
       <dependency>
         <groupId>io.smallrye.reactive</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
         <artifactId>smallrye-reactive-messaging-camel</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
-        <version>4.10.2</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+        <version>4.15.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
       </dependency>
       <dependency>
         <groupId>io.swagger.core.v3</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
@@ -6524,12 +6524,12 @@
       <dependency>
         <groupId>org.jetbrains.kotlin</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
         <artifactId>kotlin-scripting-jvm</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
-        <version>1.9.21</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+        <version>1.9.22</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
       </dependency>
       <dependency>
         <groupId>org.jetbrains.kotlin</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
         <artifactId>kotlin-scripting-jvm-host</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
-        <version>1.9.21</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+        <version>1.9.22</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
       </dependency>
       <dependency>
         <groupId>org.mapstruct</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->


(camel-quarkus) 02/05: Workaround openstack4j incompatibility with Jackson 2.16.x #5604

Posted by gi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch quarkus-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 5c2044c22b1f451a612401d8e99ca7effdd16fa0
Author: James Netherton <ja...@gmail.com>
AuthorDate: Mon Dec 11 08:53:29 2023 +0000

    Workaround openstack4j incompatibility with Jackson 2.16.x #5604
---
 extensions/openstack/runtime/pom.xml               | 11 +++
 .../OSBadBooleanDeserializerSubstitutions.java     | 87 ++++++++++++++++++++++
 2 files changed, 98 insertions(+)

diff --git a/extensions/openstack/runtime/pom.xml b/extensions/openstack/runtime/pom.xml
index f8f4521943..4d3411bfd6 100644
--- a/extensions/openstack/runtime/pom.xml
+++ b/extensions/openstack/runtime/pom.xml
@@ -52,6 +52,17 @@
             <groupId>io.quarkus</groupId>
             <artifactId>quarkus-jackson</artifactId>
         </dependency>
+        <!-- TODO: Remove this https://github.com/apache/camel-quarkus/issues/5604 -->
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.graalvm.sdk</groupId>
+            <artifactId>graal-sdk</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/extensions/openstack/runtime/src/main/java/org/apache/camel/quarkus/component/openstack/graal/OSBadBooleanDeserializerSubstitutions.java b/extensions/openstack/runtime/src/main/java/org/apache/camel/quarkus/component/openstack/graal/OSBadBooleanDeserializerSubstitutions.java
new file mode 100644
index 0000000000..7d7ef1ba62
--- /dev/null
+++ b/extensions/openstack/runtime/src/main/java/org/apache/camel/quarkus/component/openstack/graal/OSBadBooleanDeserializerSubstitutions.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.openstack.graal;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.JsonToken;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.util.ClassUtil;
+import com.oracle.svm.core.annotate.Alias;
+import com.oracle.svm.core.annotate.Substitute;
+import com.oracle.svm.core.annotate.TargetClass;
+import org.openstack4j.core.transport.internal.OSBadBooleanDeserializer;
+
+/**
+ * TODO: Remove this https://github.com/apache/camel-quarkus/issues/5604
+ *
+ * Mostly a replica of the original OSBadBooleanDeserializer.deserialize but with references to
+ * deprecated & removed Jackson methods replaced.
+ */
+@TargetClass(OSBadBooleanDeserializer.class)
+final class OSBadBooleanDeserializerSubstitutions {
+
+    @Substitute
+    public Boolean deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
+        JsonToken t = jp.getCurrentToken();
+        if (t == JsonToken.VALUE_TRUE) {
+            return Boolean.TRUE;
+        }
+        if (t == JsonToken.VALUE_FALSE) {
+            return Boolean.FALSE;
+        }
+        // [JACKSON-78]: should accept ints too, (0 == false, otherwise true)
+        if (t == JsonToken.VALUE_NUMBER_INT) {
+            // 11-Jan-2012, tatus: May be outside of int...
+            if (jp.getNumberType() == JsonParser.NumberType.INT) {
+                return (jp.getIntValue() == 0) ? Boolean.FALSE : Boolean.TRUE;
+            }
+            return Boolean.valueOf(_parseBooleanFromNumber(jp, ctxt));
+        }
+        if (t == JsonToken.VALUE_NULL) {
+            return null;
+        }
+        // And finally, let's allow Strings to be converted too
+        if (t == JsonToken.VALUE_STRING) {
+            String text = jp.getText().trim();
+            if ("true".equalsIgnoreCase(text)) {
+                return Boolean.TRUE;
+            }
+            if ("false".equalsIgnoreCase(text)) {
+                return Boolean.FALSE;
+            }
+            if (text.length() == 0) {
+                return null;
+            }
+            throw ctxt.weirdStringException(text, Boolean.class, "only \"true\" or \"false\" recognized");
+        }
+
+        ctxt.handleUnexpectedToken(Boolean.class, ctxt.getParser());
+        // Otherwise, no can do:
+        throw JsonMappingException.from(ctxt.getParser(),
+                String.format("Cannot deserialize instance of %s out of %s token",
+                        ClassUtil.nameOf(Boolean.class), t));
+    }
+
+    @Alias
+    protected final boolean _parseBooleanFromNumber(JsonParser jp, DeserializationContext ctxt) {
+        return true;
+    }
+}


(camel-quarkus) 05/05: Exclude redundant kubernetes-client dependencies

Posted by gi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch quarkus-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit aa23de47e5be1af4487484be77211ba01e540747
Author: James Netherton <ja...@gmail.com>
AuthorDate: Tue Jan 9 08:16:16 2024 +0000

    Exclude redundant kubernetes-client dependencies
    
    Fixes #5515
---
 integration-tests/camel-k-runtime/pom.xml          |  5 -----
 integration-tests/kubernetes/pom.xml               |  5 -----
 integration-tests/master-openshift/pom.xml         | 24 ++++++++++++++++------
 poms/bom/pom.xml                                   | 12 +++++++++++
 poms/bom/src/main/generated/flattened-full-pom.xml | 12 +++++++++++
 .../src/main/generated/flattened-reduced-pom.xml   | 12 +++++++++++
 .../generated/flattened-reduced-verbose-pom.xml    | 12 +++++++++++
 7 files changed, 66 insertions(+), 16 deletions(-)

diff --git a/integration-tests/camel-k-runtime/pom.xml b/integration-tests/camel-k-runtime/pom.xml
index fadacdd0fc..c64174cb5e 100644
--- a/integration-tests/camel-k-runtime/pom.xml
+++ b/integration-tests/camel-k-runtime/pom.xml
@@ -30,11 +30,6 @@
     <name>Camel Quarkus :: Integration Tests :: Camel K Runtime</name>
     <description>Integration tests for Camel Quarkus K Runtime extension</description>
 
-    <properties>
-        <!-- TODO: https://github.com/apache/camel-quarkus/issues/5515 -->
-        <ci.native.tests.skip>true</ci.native.tests.skip>
-    </properties>
-
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/kubernetes/pom.xml b/integration-tests/kubernetes/pom.xml
index 0b9cdc892f..73b2bf3383 100644
--- a/integration-tests/kubernetes/pom.xml
+++ b/integration-tests/kubernetes/pom.xml
@@ -30,11 +30,6 @@
     <name>Camel Quarkus :: Integration Tests :: Kubernetes</name>
     <description>Integration tests for Camel Quarkus Kubernetes extension</description>
 
-    <properties>
-        <!-- TODO: https://github.com/apache/camel-quarkus/issues/5515 -->
-        <ci.native.tests.skip>true</ci.native.tests.skip>
-    </properties>
-
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/master-openshift/pom.xml b/integration-tests/master-openshift/pom.xml
index 3bb0e84ac1..87b18901b7 100644
--- a/integration-tests/master-openshift/pom.xml
+++ b/integration-tests/master-openshift/pom.xml
@@ -30,12 +30,6 @@
     <name>Camel Quarkus :: Integration Tests :: Master With OpenShift</name>
     <description>Integration tests for Camel Quarkus Master extension with OpenShift</description>
 
-    <properties>
-        <quarkus.runner>${project.build.directory}/quarkus-app/quarkus-run.jar</quarkus.runner>
-        <!-- TODO: https://github.com/apache/camel-quarkus/issues/5515 -->
-        <ci.native.tests.skip>true</ci.native.tests.skip>
-    </properties>
-
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
@@ -68,6 +62,24 @@
         <dependency>
             <groupId>io.quarkus</groupId>
             <artifactId>quarkus-openshift-client</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.fabric8</groupId>
+                    <artifactId>kubernetes-httpclient-okhttp</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.fabric8</groupId>
+                    <artifactId>openshift-model-hive</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.fabric8</groupId>
+                    <artifactId>openshift-model-miscellaneous</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.fabric8</groupId>
+                    <artifactId>openshift-model-operator</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <!-- test dependencies -->
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 0f6ba05436..824c129ff1 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1679,6 +1679,18 @@
                         <groupId>io.fabric8</groupId>
                         <artifactId>kubernetes-httpclient-okhttp</artifactId>
                     </exclusion>
+                    <exclusion>
+                        <groupId>io.fabric8</groupId>
+                        <artifactId>openshift-model-hive</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>io.fabric8</groupId>
+                        <artifactId>openshift-model-miscellaneous</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>io.fabric8</groupId>
+                        <artifactId>openshift-model-operator</artifactId>
+                    </exclusion>
                 </exclusions>
             </dependency>
             <dependency>
diff --git a/poms/bom/src/main/generated/flattened-full-pom.xml b/poms/bom/src/main/generated/flattened-full-pom.xml
index fdbfbbae44..6ed679eeee 100644
--- a/poms/bom/src/main/generated/flattened-full-pom.xml
+++ b/poms/bom/src/main/generated/flattened-full-pom.xml
@@ -1617,6 +1617,18 @@
             <groupId>io.fabric8</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
             <artifactId>kubernetes-httpclient-okhttp</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
           </exclusion>
+          <exclusion>
+            <groupId>io.fabric8</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+            <artifactId>openshift-model-hive</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+          </exclusion>
+          <exclusion>
+            <groupId>io.fabric8</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+            <artifactId>openshift-model-miscellaneous</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+          </exclusion>
+          <exclusion>
+            <groupId>io.fabric8</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+            <artifactId>openshift-model-operator</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+          </exclusion>
         </exclusions>
       </dependency>
       <dependency>
diff --git a/poms/bom/src/main/generated/flattened-reduced-pom.xml b/poms/bom/src/main/generated/flattened-reduced-pom.xml
index 1c6ff7fb91..0f9187e76c 100644
--- a/poms/bom/src/main/generated/flattened-reduced-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-pom.xml
@@ -1617,6 +1617,18 @@
             <groupId>io.fabric8</groupId>
             <artifactId>kubernetes-httpclient-okhttp</artifactId>
           </exclusion>
+          <exclusion>
+            <groupId>io.fabric8</groupId>
+            <artifactId>openshift-model-hive</artifactId>
+          </exclusion>
+          <exclusion>
+            <groupId>io.fabric8</groupId>
+            <artifactId>openshift-model-miscellaneous</artifactId>
+          </exclusion>
+          <exclusion>
+            <groupId>io.fabric8</groupId>
+            <artifactId>openshift-model-operator</artifactId>
+          </exclusion>
         </exclusions>
       </dependency>
       <dependency>
diff --git a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
index 834e85257c..4a55d6a58b 100644
--- a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
@@ -1617,6 +1617,18 @@
             <groupId>io.fabric8</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
             <artifactId>kubernetes-httpclient-okhttp</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
           </exclusion>
+          <exclusion>
+            <groupId>io.fabric8</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+            <artifactId>openshift-model-hive</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+          </exclusion>
+          <exclusion>
+            <groupId>io.fabric8</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+            <artifactId>openshift-model-miscellaneous</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+          </exclusion>
+          <exclusion>
+            <groupId>io.fabric8</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+            <artifactId>openshift-model-operator</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+          </exclusion>
         </exclusions>
       </dependency>
       <dependency>