My guess is that the error is happening on the server side and being raised 
at 
https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/util/Base64.java#L713.
 If there is a stack trace in the server log, then that would help pinpoint the 
issue. I’m guessing here, but it could be the following call:

(client) TableOperationsImpl.doFateOperation ->
(client) TableOperationsImpl.beginFateOperation ->

(manager) FateServiceHandler.beginFateOperation ->
(manager) FateServiceHandler.authenticate ->

(manager) SecurityOperation.authenticateUser ->
(manager) SecurityOperations.authenticate ->
(manager) Credentials.fromThrift -> …

 

  In your code, how is client created? Is it cached, shared, etc? Does the 
framework that you are using create a new instance of your class and maybe the 
AccumuloClient is not fully initialized?

 

From: Christopher <ctubb...@apache.org> 
Sent: Sunday, April 21, 2024 4:56 PM
To: accumulo-user <user@accumulo.apache.org>
Subject: Re: Issue with TableOperations

 

I don't see this error message anywhere in Accumulo code. It looks like it 
might be coming from d4m?

 

On Sat, Apr 20, 2024, 17:07 Geoffry Roberts <geoffry.robe...@gmail.com 
<mailto:geoffry.robe...@gmail.com> > wrote:

v2.1.2

 

On Sat, 20 Apr 2024 at 13:11, Dave Marion <dlmar...@comcast.net 
<mailto:dlmar...@comcast.net> > wrote:

 

 

  What version of Accumulo are you using?

 

 

 

On Apr 20, 2024 12:16 PM, Geoffry Roberts <geoffry.robe...@gmail.com 
<mailto:geoffry.robe...@gmail.com> > wrote:

I am setting up a microservice that accesses accumulo.  It's a specialized 
thing of limited scope.  I do need to get it to create tables (Code is below.). 
 

 

*       Java 17
*       SpringBoot running Jetty
*       Postman

 

In the below code bit, the tableName is a string "patient״.  When I run it, I 
get an error message: 

 

org.apache.accumulo.core.client.AccumuloException: Input byte[] should at least 
have 2 bytes for base64 bytes

        at 
org.apache.accumulo.core.clientImpl.TableOperationsImpl.doFateOperation(TableOperationsImpl.java:413)

        at 
org.apache.accumulo.core.clientImpl.TableOperationsImpl.doFateOperation(TableOperationsImpl.java:365)

        at 
org.apache.accumulo.core.clientImpl.TableOperationsImpl.doTableFateOperation(TableOperationsImpl.java:1803)

        at 
org.apache.accumulo.core.clientImpl.TableOperationsImpl.create(TableOperationsImpl.java:254)

        at 
org.apache.accumulo.core.clientImpl.TableOperationsImpl.create(TableOperationsImpl.java:226)

        at 
d4m.acc.microservice.D4MACCController.createTable(D4MACCController.java:58)

 

Q: Why it seems all is quite correct?  The log message is correct.  The return 
value is correct.




@PostMapping("/create")

public String createTable(@RequestBody String tableName) {

TableOperations ops = client.tableOperations();

try {

LOG.info("create=" + tableName);

ops.create(tableName);

} catch (AccumuloException | AccumuloSecurityException | TableExistsException 
e) {

e.printStackTrace();

}

return tableName;

}--

 

Thanks

 

My software always runs perfectly in the end. If it is not perfect, it is not 
yet the end.

 

Geoffry Roberts

 




 

-- 

My software always runs perfectly in the end. If it is not perfect, it is not 
yet the end.

 

Geoffry Roberts

Reply via email to