[CONJ-972] possible java.lang.ClassCastException when executing prepared statement Created: 2022-05-19  Updated: 2022-10-10  Resolved: 2022-05-19

Status: Closed
Project: MariaDB Connector/J
Component/s: Other
Affects Version/s: None
Fix Version/s: 3.0.5

Type: Bug Priority: Critical
Reporter: Diego Dupin Assignee: Diego Dupin
Resolution: Fixed Votes: 0
Labels: None


 Description   

exact error :

java.lang.ClassCastException: class java.util.LinkedHashMap$Entry cannot be cast to class java.util.HashMap$TreeNode (java.util.LinkedHashMap$Entry and java.util.HashMap$TreeNode are in module java.base of loader 'bootstrap')
	at java.base/java.util.HashMap$TreeNode.moveRootToFront(HashMap.java:1986)
	at java.base/java.util.HashMap$TreeNode.treeify(HashMap.java:2102)
	at java.base/java.util.HashMap.treeifyBin(HashMap.java:770)
	at java.base/java.util.HashMap.putVal(HashMap.java:642)
	at java.base/java.util.HashMap.put(HashMap.java:610)
	at org.mariadb.jdbc.util.ClientParser.parameterParts(ClientParser.java:160)
	at org.mariadb.jdbc.ClientPreparedStatement.<init>(ClientPreparedStatement.java:68)
	at org.mariadb.jdbc.Connection.prepareInternal(Connection.java:156)
	at org.mariadb.jdbc.Connection.prepareStatement(Connection.java:112)

This is a concurency problem. a solution could be to use a ConcurrentHashMap, but after benchmarking the change, the solution would make it slower compare to not using cache at all, avoiding synchronized calls.
So solution is to remove entirely (like 2.7)


Generated at Thu Feb 08 03:19:40 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.