Bug #76684 com.mysql.clusterj.ClusterJDatastoreException on get method clusterJ interface
| Submitted: | 14 Apr 2015 7:39 | Modified: | 19 Sep 2019 5:19 |
|---|---|---|---|
| Reporter: | Arco van der Velden | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Cluster: Cluster/J | Severity: | S1 (Critical) |
| Version: | 7.3.8 Win x64 | OS: | Windows |
| Assigned to: | MySQL Verification Team | CPU Architecture: | Any |
| Tags: | ClusterJ, ClusterJDatastoreException, get | ||
[14 Apr 2015 8:13]
Arco van der Velden
Full stack trace com.mysql.clusterj.ClusterJDatastoreException: For field total column total valueDelegate object BigDecimal, error executing objectGetValue. Caused by java.lang.IllegalStateException:Current state = CODING_END, new state = FLUSHED at com.mysql.clusterj.core.metadata.AbstractDomainFieldHandlerImpl.objectGetValue(AbstractDomainFieldHandlerImpl.java:297) at com.mysql.clusterj.tie.NdbRecordSmartValueHandlerImpl.get(NdbRecordSmartValueHandlerImpl.java:715) at com.mysql.clusterj.tie.NdbRecordSmartValueHandlerImpl.invoke(NdbRecordSmartValueHandlerImpl.java:741) at com.mysql.clusterj.core.metadata.$Proxy12.getTotal(Unknown Source) at com.euroccp.tps.entities.facade.InstructionsFacade.updateRecordClusterJ(InstructionsFacade.java:66) at com.euroccp.tps.database.TPSDatabase.processTransAction(TPSDatabase.java:68) at com.euroccp.tps.threads.MySQLClusterJ.processCommand(MySQLClusterJ.java:61) at com.euroccp.tps.threads.MySQLClusterJ.run(MySQLClusterJ.java:48) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: java.lang.IllegalStateException: Current state = CODING_END, new state = FLUSHED at java.nio.charset.CharsetDecoder.throwIllegalStateException(CharsetDecoder.java:968) at java.nio.charset.CharsetDecoder.flush(CharsetDecoder.java:657) at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:786) at com.mysql.clusterj.tie.Utility.getDecimalString(Utility.java:1719) at com.mysql.clusterj.tie.Utility.getDecimal(Utility.java:1671) at com.mysql.clusterj.tie.NdbRecordImpl.getDecimal(NdbRecordImpl.java:543) at com.mysql.clusterj.tie.NdbRecordOperationImpl.getDecimal(NdbRecordOperationImpl.java:854) at com.mysql.clusterj.tie.NdbRecordSmartValueHandlerImpl.getBigDecimal(NdbRecordSmartValueHandlerImpl.java:210) at com.mysql.clusterj.core.metadata.AbstractDomainFieldHandlerImpl$10.objectGetValue(AbstractDomainFieldHandlerImpl.java:1249) at com.mysql.clusterj.core.metadata.AbstractDomainFieldHandlerImpl.objectGetValue(AbstractDomainFieldHandlerImpl.java:295) ... 12 more java.lang.IllegalStateException: Current state = CODING_END, new state = FLUSHED at java.nio.charset.CharsetDecoder.throwIllegalStateException(CharsetDecoder.java:968) at java.nio.charset.CharsetDecoder.flush(CharsetDecoder.java:657) at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:786) at com.mysql.clusterj.tie.Utility.getDecimalString(Utility.java:1719) at com.mysql.clusterj.tie.Utility.getDecimal(Utility.java:1671) at com.mysql.clusterj.tie.NdbRecordImpl.getDecimal(NdbRecordImpl.java:543) at com.mysql.clusterj.tie.NdbRecordOperationImpl.getDecimal(NdbRecordOperationImpl.java:854) at com.mysql.clusterj.tie.NdbRecordSmartValueHandlerImpl.getBigDecimal(NdbRecordSmartValueHandlerImpl.java:210) at com.mysql.clusterj.core.metadata.AbstractDomainFieldHandlerImpl$10.objectGetValue(AbstractDomainFieldHandlerImpl.java:1249) at com.mysql.clusterj.core.metadata.AbstractDomainFieldHandlerImpl.objectGetValue(AbstractDomainFieldHandlerImpl.java:295) at com.mysql.clusterj.tie.NdbRecordSmartValueHandlerImpl.get(NdbRecordSmartValueHandlerImpl.java:715) at com.mysql.clusterj.tie.NdbRecordSmartValueHandlerImpl.invoke(NdbRecordSmartValueHandlerImpl.java:741) at com.mysql.clusterj.core.metadata.$Proxy12.getTotal(Unknown Source) at com.euroccp.tps.entities.facade.InstructionsFacade.updateRecordClusterJ(InstructionsFacade.java:66) at com.euroccp.tps.database.TPSDatabase.processTransAction(TPSDatabase.java:68) at com.euroccp.tps.threads.MySQLClusterJ.processCommand(MySQLClusterJ.java:61) at com.euroccp.tps.threads.MySQLClusterJ.run(MySQLClusterJ.java:48) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) apr 14, 2015
[19 Sep 2019 5:19]
MySQL Verification Team
Fixed in: MySQL Cluster 7.3.10 MySQL Cluster 7.4.7
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.050 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: I'm developing a java application using the clusterj api. The code below sometimes throws the following exception "com.mysql.clusterj.ClusterJDatastoreException: For field total column total valueDelegate object BigDecimal, error executing objectGetValue. Caused by java.lang.IllegalStateException:Current state = CODING_END, new state = FLUSHED" The exception is thrown by the positionsInterface.getTotal() statement. The code is running in multiple threads. PositionsInterface positionsInterface = session.find(PositionsInterface.class, id); if (positionsInterface == null) { //Insert positionsInterface = session.newInstance(PositionsInterface.class, id); positionsInterface.setTotal(amount); session.persist(positionsInterface); } else { //Update positionsInterface.setTotal(positionsInterface.getTotal().add(amount)); session.updatePersistent(positionsInterface); } How to repeat: Try to get a value from a interface in a multithreaded Java environment.