Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
6.6.0
-
Untriaged
-
1
-
Yes
-
CX Sprint 209
Description
We (Java SDK folk) are now running our CI tests against 6.6, which has found this minor regression.
The test is:
@Test
|
void dropDatasetFailsIfAbsent() { |
assertThrows(DatasetNotFoundException.class, () -> analytics.dropDataset("foo", |
dropDatasetAnalyticsOptions()
|
.dataverseName("absentDataverse"))); |
}
|
|
In 6.6 this now fails as it raises a DataverseNotFoundException rather than DatasetNotFoundException, as cbas now returns a 24034 code. In this test and the one below too, neither "foo" nor "absentDataverse" exist.
This causes problems for our `ignoreIfNotExist` option, which allows dropping datasets and silently ignoring if they don't exist. Because that logic is expecting a DataverseNotFoundException.
E.g. this other test fails with a DataverseNotFoundException, when you would expect it to succeed. This test also passed in 6.5.
@Test
|
void dropDatasetCanIgnoreAbsent() { |
analytics.dropDataset("foo", |
dropDatasetAnalyticsOptions()
|
.ignoreIfNotExists(true) |
.dataverseName("absentDataverse")); |
}
|
|
For both tests, if I don't specify a dataverseName then the tests pass as expected.
This behavior was changed by https://issues.couchbase.com/browse/MB-39142 , specifically:
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/6203/8/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java#1576
Graham Pople,
We discussed this issue today and believe the new error code better explains the problem to the end user because it's more specific ("dataverse not found" instead of "dataset not found").
Could you consider fixing it on your side? If ignoreIfNotExists=true then do not fail on either DataverseNotFoundException or DatasetNotFoundException?