| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
There was a problem hiding this comment.
Is it possible to add a test?
Sorry, something went wrong.
|
The error message in CI doesn't seem to be related to my PR: /opt/rh/devtoolset-10/root/usr/libexec/gcc/x86_64-redhat-linux/10/ld: cannot find -lutf8proc
collect2: error: ld returned 1 exit status
linkage: https://github.com/apache/arrow-java/actions/runs/15140171347/job/42594091462?pr=760 Do you have some suggestions? |
Sorry, something went wrong.
I'll try to add a test case in integration_tests.py. |
Sorry, something went wrong.
Could you open a separated issue for it? |
Sorry, something went wrong.
Do you need an integration test? IMO, you should be able to export a stream, then immediately import it, all within Java. |
Sorry, something went wrong.
issue: #767 |
Sorry, something went wrong.
|
Thanks. (We've fixed this problem in apache/arrow. Sorry for not sharing it here...) |
Sorry, something went wrong.
I add a unittest but I think it can't make sure TryCopyLastError works correctly, so I suggest it should be removed. |
Sorry, something went wrong.
|
Can't the test validate that the exception has the right error message after making it through the FFI boundary? |
Sorry, something went wrong.
PTAL. |
Sorry, something went wrong.
| root.setRowCount(4); | ||
| batches.add(unloader.getRecordBatch()); | ||
|
|
||
| final String exceptionMessage = "java.lang.RuntimeException: Error occurred while getting next schema root.\n\tat org.apache.arrow.adapter.jdbc.ArrowVectorIterator.next(ArrowVectorIterator.java:205)\n\tat com.oceanbase.external.jdbc.JdbcScanner.loadNextBatch(JdbcScanner.java:73)\n\tat org.apache.arrow.c.ArrayStreamExporter$ExportedArrayStreamPrivateData.getNext(ArrayStreamExporter.java:72)\nCaused by: java.lang.RuntimeException: Error occurred while consuming data.\n\tat org.apache.arrow.adapter.jdbc.ArrowVectorIterator.consumeData(ArrowVectorIterator.java:127)\n\tat org.apache.arrow.adapter.jdbc.ArrowVectorIterator.load(ArrowVectorIterator.java:178)\n\tat org.apache.arrow.adapter.jdbc.ArrowVectorIterator.next(ArrowVectorIterator.java:198)\n\t... 2 more\nCaused by: java.lang.OutOfMemoryError: Java heap space\n"; |
There was a problem hiding this comment.
Um, this is a little excessive. Can we just use a short canary string?
Sorry, something went wrong.
There was a problem hiding this comment.
fixed
Sorry, something went wrong.
| } | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
We need to assert that we did indeed get an exception.
Sorry, something went wrong.
There was a problem hiding this comment.
DONE
Sorry, something went wrong.
| assertThat(eMessage.length()).isGreaterThan(expectExceptionMessage.length() + 1); | ||
| assertThat(eMessage.substring(eMessage.length() - expectExceptionMessage.length() - 1, eMessage.length() - 1)) | ||
| .isEqualTo(expectExceptionMessage); |
There was a problem hiding this comment.
Just use contains...
Sorry, something went wrong.
There was a problem hiding this comment.
No, we must make sure the string in the exception is the same with we throws.
"abc\x037" contains "abc", but it's not correct and we want to catch the bug.
Sorry, something went wrong.
There was a problem hiding this comment.
...then you just want endsWith?
Sorry, something went wrong.
There was a problem hiding this comment.
I use endsWith to simplified the code.
Sorry, something went wrong.
| for (Object batch : batches) { | ||
| try { | ||
| reader.loadNextBatch(); | ||
| } catch (Exception e) { | ||
| assertThat(exceptionThrowed).isEqualTo(null); | ||
| final String eMessage = e.getMessage(); | ||
| // 1 for '}', ref to CDataJniException | ||
| assertThat(eMessage.length()).isGreaterThan(expectExceptionMessage.length() + 1); | ||
| assertThat(eMessage.substring(eMessage.length() - expectExceptionMessage.length() - 1, eMessage.length() - 1)) | ||
| .isEqualTo(expectExceptionMessage); | ||
| exceptionThrowed = e; | ||
| continue; | ||
| } |
There was a problem hiding this comment.
Use assertThrows.
Sorry, something went wrong.
There was a problem hiding this comment.
DONE.
Sorry, something went wrong.
|
ah right, CI is broken... |
Sorry, something went wrong.
|
Regardless, there are Checkstyle failures Error: /build/c/src/test/java/org/apache/arrow/c/ExceptionTest.java:30:8: Unused import: java.util.Objects. [UnusedImports] Error: /build/c/src/test/java/org/apache/arrow/c/ExceptionTest.java:33:8: Unused import: org.apache.arrow.c.jni.CDataJniException. [UnusedImports] Error: /build/c/src/test/java/org/apache/arrow/c/ExceptionTest.java:36:8: Unused import: org.apache.arrow.vector.IntVector. [UnusedImports] Error: /build/c/src/test/java/org/apache/arrow/c/ExceptionTest.java:39:8: Unused import: org.apache.arrow.vector.VectorUnloader. [UnusedImports] |
Sorry, something went wrong.
sorry for that. fixed. |
Sorry, something went wrong.
|
There's still more: Error: Failed to execute goal com.diffplug.spotless:spotless-maven-plugin:2.44.4:check (spotless-check) on project arrow-c-data: The following files had format violations:
Error: src/test/java/org/apache/arrow/c/ExceptionTest.java
Error: @@ -51,7 +51,7 @@
Error: ····final·List<Object>·batches·=·new·ArrayList<>();
Error:
Error: ····try·(BufferAllocator·allocator·=·new·RootAllocator();
Error: -·········VectorSchemaRoot·root·=·VectorSchemaRoot.create(schema,·allocator))·{
Error: +········VectorSchemaRoot·root·=·VectorSchemaRoot.create(schema,·allocator))·{
Error:
Error: ······final·String·exceptionMessage·=·"This·is·a·message·for·testing·exception.";
Error:
Error: @@ -66,7 +66,7 @@
Error: ······ArrowReader·source·=·new·ExceptionMemoryArrowReader(allocator,·schema,·batches);
Error:
Error: ······try·(final·ArrowArrayStream·stream·=·ArrowArrayStream.allocateNew(allocator);
Error: -···········final·VectorSchemaRoot·importRoot·=·VectorSchemaRoot.create(schema,·allocator))·{
Error: +··········final·VectorSchemaRoot·importRoot·=·VectorSchemaRoot.create(schema,·allocator))·{
Error: ········final·VectorLoader·loader·=·new·VectorLoader(importRoot);
Error: ········Data.exportArrayStream(allocator,·source,·stream);
Error:
Error: @@ -85,10 +85,7 @@
Error: ····private·final·DictionaryProvider·provider;
Error: ····private·int·nextBatch;
Error:
Error: -····ExceptionMemoryArrowReader(
Error: -········BufferAllocator·allocator,
Error: -········Schema·schema,
Error: -········List<Object>·batches)·{
Error: +····ExceptionMemoryArrowReader(BufferAllocator·allocator,·Schema·schema,·List<Object>·batches)·{
Error: ······super(allocator);
Error: ······this.schema·=·schema;
Error: ······this.batches·=·batches;
Error: Run 'mvn spotless:apply' to fix these violations.
|
Sorry, something went wrong.
|
Thanks for your patient. It seems the failed CI test cases are not related with this PR now. Please take a look. |
Sorry, something went wrong.
|
Ok. I'll merge this, but the CI really needs to be fixed...I just don't have time for arrow-java these days :/ |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
What's Changed
We should get the length of byte[] by GetArrayLength, not strlen which may cause invalid memory access.
Closes #759.