Forum: Building APIs & Wire Protocol

Post: Java Exception when using erlvolt

Java Exception when using erlvolt
fredrikelinder
Mar 29, 2013
Hi

I get a java exception when calling a stored procedure that does an insert. I can see it says I have an VoltType.INVALID, but I'm only using the ones defined in erlvolt.

I have no clue what the error is.

What I send to erlvolt:callProceudre/3

ThePort,
<<"procedurename">>,
[{5, 22741973},
{6, 1364518405525035},
{5, 26},
{5, 17},
{5, 1},
{5, 7},
{5, 2},
{6, 771283},
{6, 1364518405},
{6, 1363248341},
{8, 0},
{6, 51},
{5, 0}]

What I get back:

{voltresponse,{0,<<0,0,0,0,0,0,0,1>>,254,<<"Exception while deserializing procedure params
java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: ParameterSet doesn't support type VoltType.INVALID
\tat org.voltdb.StoredProcedureInvocation.getParams(StoredProcedureInvocation.java:145)
\tat org.voltdb.messaging.InitiateTaskMessage.getParameters(InitiateTaskMessage.java:133)
\tat org.voltdb.ExecutionSite.processInitiateTask(ExecutionSite.java:2713)
\tat org.voltdb.dtxn.SinglePartitionTxnState.doWork(SinglePartitionTxnState.java:81)
\tat org.voltdb.ExecutionSite.recursableRun(ExecutionSite.java:2483)
\tat org.voltdb.ExecutionSite.run(ExecutionSite.java:1101)
\tat org.voltdb.RealVoltDB.run(RealVoltDB.java:1589)
\tat org.voltdb.VoltDB.main(VoltDB.java:714)
Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: ParameterSet doesn't support type VoltType.INVALID
\tat java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
\tat java.util.concurrent.FutureTask.get(FutureTask.java:111)
\tat org.voltdb.StoredProcedureInvocation.getParams(StoredProcedureInvocation.java:141)
\t... 7 more
Caused by: java.lang.RuntimeException: ParameterSet doesn't support type VoltType.INVALID
\tat org.voltdb.ParameterSet.readOneParameter(ParameterSet.java:467)
\tat org.voltdb.ParameterSet.readExternal(ParameterSet.java:122)
\tat org.voltdb.messaging.FastDeserializer.readObject(FastDeserializer.java:114)
\tat org.voltdb.StoredProcedureInvocation$3.call(StoredProcedureInvocation.java:280)
\tat org.voltdb.StoredProcedureInvocation$3.call(StoredProcedureInvocation.java:276)
\tat java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
\tat java.util.concurrent.FutureTask.run(FutureTask.java:166)
\tat org.voltdb.StoredProcedureInvocation.getParams(StoredProcedureInvocation.java:139)
\t... 7 more
">>,128,<<>>,<<>>,0},[]}
henning
Apr 12, 2013
Hi Fredrik!

Thanks a lot for trying Erlvolt! Sorry you ran into this issue. You may have unmasked a mechanism that is too clever when staging the parameters for the stored procedure.

However, my immediate question would be, what you expected to arrive at the stored procedure when you feed tuples to call_procedure/3.

Also, please make sure to use the newest release from http://github.com/voltdb/voltdb-client-erlang. I am not sure why you are citing the older callProcedure/3 instead of call_procedure/3 as it is named now.

Looking forward to hear from you,

Henning