Skip to content

Commit 518df7d

Browse files
smkniaziGautier Berthou
authored and
Gautier Berthou
committed
[HOPS-1581] Upgrade to NDB8
1 parent 45df84b commit 518df7d

File tree

6 files changed

+124
-95
lines changed

6 files changed

+124
-95
lines changed

NDB/clusterj-fixes/clusterj-fix.patch

+118-88
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
diff --git a/storage/ndb/clusterj/clusterj-api/src/main/java/com/mysql/clusterj/DynamicObject.java b/storage/ndb/clusterj/clusterj-api/src/main/java/com/mysql/clusterj/DynamicObject.java
2-
index 6f2abce3..c03898ca 100644
2+
index 70c2c4a8..ecb927b2 100644
33
--- a/storage/ndb/clusterj/clusterj-api/src/main/java/com/mysql/clusterj/DynamicObject.java
44
+++ b/storage/ndb/clusterj/clusterj-api/src/main/java/com/mysql/clusterj/DynamicObject.java
5-
@@ -49,13 +49,13 @@ public abstract class DynamicObject {
5+
@@ -56,14 +56,14 @@ public abstract class DynamicObject {
66
return delegate.found();
77
}
88

9+
- @SuppressWarnings("deprecation")
910
- protected void finalize() throws Throwable {
1011
- try {
1112
- if (delegate != null) {
@@ -15,21 +16,22 @@ index 6f2abce3..c03898ca 100644
1516
- super.finalize();
1617
- }
1718
- }
18-
+// protected void finalize() throws Throwable {
19-
+// try {
20-
+// if (delegate != null) {
21-
+// delegate.release();
22-
+// }
23-
+// } finally {
24-
+// super.finalize();
25-
+// }
26-
+// }
19+
+// @SuppressWarnings("deprecation")
20+
+// protected void finalize() throws Throwable {
21+
+// try {
22+
+// if (delegate != null) {
23+
+// delegate.release();
24+
+// }
25+
+// } finally {
26+
+// super.finalize();
27+
+// }
28+
+// }
2729
}
2830
diff --git a/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/SessionFactoryImpl.java b/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/SessionFactoryImpl.java
29-
index ac4fcf73..13cb3e1a 100644
31+
index 58f36b4c..5660d882 100644
3032
--- a/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/SessionFactoryImpl.java
3133
+++ b/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/SessionFactoryImpl.java
32-
@@ -151,6 +151,7 @@ public class SessionFactoryImpl implements SessionFactory, Constants {
34+
@@ -158,6 +158,7 @@ public class SessionFactoryImpl implements SessionFactory, Constants {
3335
// if not using connection pooling, create a new session factory
3436
result = new SessionFactoryImpl(props);
3537
}
@@ -38,10 +40,10 @@ index ac4fcf73..13cb3e1a 100644
3840
}
3941

4042
diff --git a/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainTypeHandlerImpl.java b/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainTypeHandlerImpl.java
41-
index ddc926a8..70c0698d 100644
43+
index 16fbbb0b..9cf6fde3 100644
4244
--- a/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainTypeHandlerImpl.java
4345
+++ b/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/metadata/DomainTypeHandlerImpl.java
44-
@@ -60,9 +60,9 @@ import java.util.Map;
46+
@@ -64,9 +64,9 @@ import java.util.Map;
4547
*/
4648
public class DomainTypeHandlerImpl<T> extends AbstractDomainTypeHandlerImpl<T> {
4749

@@ -55,19 +57,19 @@ index ddc926a8..70c0698d 100644
5557
/** The domain class. */
5658
Class<T> cls;
5759
@@ -124,7 +124,7 @@ public class DomainTypeHandlerImpl<T> extends AbstractDomainTypeHandlerImpl<T> {
58-
// Create a proxy class for the domain class
59-
// Invoke the handler's finalizer method when the proxy is finalized
60-
proxyClass = (Class<T>)Proxy.getProxyClass(
61-
- cls.getClassLoader(), new Class[]{cls, Finalizable.class});
62-
+ cls.getClassLoader(), new Class[]{cls});
63-
ctor = getConstructorForInvocationHandler (proxyClass);
60+
throw new ClusterJUserException(local.message(
61+
"ERR_Not_Persistence_Capable_Type", name));
62+
}
63+
- proxyInterfaces = new Class<?>[] {cls, Finalizable.class};
64+
+ proxyInterfaces = new Class<?>[] {cls};
65+
// Get the table name from Persistence Capable annotation
6466
persistenceCapable = cls.getAnnotation(PersistenceCapable.class);
6567
if (persistenceCapable == null) {
6668
diff --git a/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/util/JDK14LoggerImpl.java b/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/util/JDK14LoggerImpl.java
67-
index 833acfac..a26e0a3d 100644
69+
index b762b229..0ebaabcd 100644
6870
--- a/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/util/JDK14LoggerImpl.java
6971
+++ b/storage/ndb/clusterj/clusterj-core/src/main/java/com/mysql/clusterj/core/util/JDK14LoggerImpl.java
70-
@@ -46,39 +46,15 @@ public class JDK14LoggerImpl implements Logger {
72+
@@ -53,66 +53,66 @@ public class JDK14LoggerImpl implements Logger {
7173
}
7274

7375
public void detail(String message) {
@@ -77,6 +79,12 @@ index 833acfac..a26e0a3d 100644
7779
- String className = element.getClassName();
7880
- String methodName = element.getMethodName();
7981
- delegate.logp(Level.FINEST, className, methodName, message);
82+
+ // Throwable t = new Throwable();
83+
+ // StackTraceElement[] stack = t.getStackTrace();
84+
+ // StackTraceElement element = stack[1];
85+
+ // String className = element.getClassName();
86+
+ // String methodName = element.getMethodName();
87+
+ // delegate.logp(Level.FINEST, className, methodName, message);
8088
}
8189

8290
public void debug(String message) {
@@ -86,6 +94,12 @@ index 833acfac..a26e0a3d 100644
8694
- String className = element.getClassName();
8795
- String methodName = element.getMethodName();
8896
- delegate.logp(Level.FINER, className, methodName, message);
97+
+ // Throwable t = new Throwable();
98+
+ // StackTraceElement[] stack = t.getStackTrace();
99+
+ // StackTraceElement element = stack[1];
100+
+ // String className = element.getClassName();
101+
+ // String methodName = element.getMethodName();
102+
+ // delegate.logp(Level.FINER, className, methodName, message);
89103
}
90104

91105
public void trace(String message) {
@@ -95,6 +109,12 @@ index 833acfac..a26e0a3d 100644
95109
- String className = element.getClassName();
96110
- String methodName = element.getMethodName();
97111
- delegate.logp(Level.FINE, className, methodName, message);
112+
+ // Throwable t = new Throwable();
113+
+ // StackTraceElement[] stack = t.getStackTrace();
114+
+ // StackTraceElement element = stack[1];
115+
+ // String className = element.getClassName();
116+
+ // String methodName = element.getMethodName();
117+
+ // delegate.logp(Level.FINE, className, methodName, message);
98118
}
99119

100120
public void info(String message) {
@@ -104,64 +124,90 @@ index 833acfac..a26e0a3d 100644
104124
- String className = element.getClassName();
105125
- String methodName = element.getMethodName();
106126
- delegate.logp(Level.INFO, className, methodName, message);
127+
+ // Throwable t = new Throwable();
128+
+ // StackTraceElement[] stack = t.getStackTrace();
129+
+ // StackTraceElement element = stack[1];
130+
+ // String className = element.getClassName();
131+
+ // String methodName = element.getMethodName();
132+
+ // delegate.logp(Level.INFO, className, methodName, message);
107133
}
108134

109135
public void warn(String message) {
110-
diff --git a/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/ClusterConnectionImpl.java b/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/ClusterConnectionImpl.java
111-
index da573402..924d894a 100644
112-
--- a/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/ClusterConnectionImpl.java
113-
+++ b/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/ClusterConnectionImpl.java
114-
@@ -17,6 +17,9 @@
136+
- Throwable t = new Throwable();
137+
- StackTraceElement[] stack = t.getStackTrace();
138+
- StackTraceElement element = stack[1];
139+
- String className = element.getClassName();
140+
- String methodName = element.getMethodName();
141+
- delegate.logp(Level.WARNING, className, methodName, message);
142+
+ // Throwable t = new Throwable();
143+
+ // StackTraceElement[] stack = t.getStackTrace();
144+
+ // StackTraceElement element = stack[1];
145+
+ // String className = element.getClassName();
146+
+ // String methodName = element.getMethodName();
147+
+ // delegate.logp(Level.WARNING, className, methodName, message);
148+
}
115149

116-
package com.mysql.clusterj.tie;
150+
public void error(String message) {
151+
- Throwable t = new Throwable();
152+
- StackTraceElement[] stack = t.getStackTrace();
153+
- StackTraceElement element = stack[1];
154+
- String className = element.getClassName();
155+
- String methodName = element.getMethodName();
156+
- delegate.logp(Level.SEVERE, className, methodName, message);
157+
+ // Throwable t = new Throwable();
158+
+ // StackTraceElement[] stack = t.getStackTrace();
159+
+ // StackTraceElement element = stack[1];
160+
+ // String className = element.getClassName();
161+
+ // String methodName = element.getMethodName();
162+
+ // delegate.logp(Level.SEVERE, className, methodName, message);
163+
}
117164

118-
+import java.net.InetAddress;
119-
+import java.net.UnknownHostException;
120-
+
121-
import java.util.IdentityHashMap;
122-
import java.util.Iterator;
123-
import java.util.Map;
124-
@@ -132,6 +135,11 @@ public class ClusterConnectionImpl
125-
byteBufferPoolForPartitionKey =
126-
new FixedByteBufferPoolImpl(PARTITION_KEY_BUFFER_SIZE, "PartitionKeyBufferPool");
127-
clusterConnection = Ndb_cluster_connection.create(connectString, nodeId);
128-
+ try {
129-
+ clusterConnection.set_name(InetAddress.getLocalHost().getHostName());
130-
+ } catch (UnknownHostException e) {
131-
+ e.printStackTrace();
132-
+ }
133-
handleError(clusterConnection, connectString, nodeId);
134-
int timeoutError = clusterConnection.set_timeout(connectTimeoutMgm);
135-
handleError(timeoutError, connectString, nodeId, connectTimeoutMgm);
165+
public void fatal(String message) {
166+
- Throwable t = new Throwable();
167+
- StackTraceElement[] stack = t.getStackTrace();
168+
- StackTraceElement element = stack[1];
169+
- String className = element.getClassName();
170+
- String methodName = element.getMethodName();
171+
- delegate.logp(Level.SEVERE, className, methodName, message);
172+
+ // Throwable t = new Throwable();
173+
+ // StackTraceElement[] stack = t.getStackTrace();
174+
+ // StackTraceElement element = stack[1];
175+
+ // String className = element.getClassName();
176+
+ // String methodName = element.getMethodName();
177+
+ // delegate.logp(Level.SEVERE, className, methodName, message);
178+
}
179+
180+
}
136181
diff --git a/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/ClusterTransactionImpl.java b/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/ClusterTransactionImpl.java
137-
index ffb2b6a8..8f383525 100644
182+
index ccedf03e..bf5aaba1 100644
138183
--- a/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/ClusterTransactionImpl.java
139184
+++ b/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/ClusterTransactionImpl.java
140-
@@ -119,6 +119,9 @@ class ClusterTransactionImpl implements ClusterTransaction {
185+
@@ -127,6 +127,9 @@ class ClusterTransactionImpl implements ClusterTransaction {
141186

142187
private List<Operation> operationsToCheck = new ArrayList<Operation>();
143188

144-
+
145189
+ private boolean isPartitionKeySet = false;
146190
+ private final boolean HOPS_PK_FIX = true;
191+
+
147192
public ClusterTransactionImpl(ClusterConnectionImpl clusterConnectionImpl,
148193
DbImpl db, Dictionary ndbDictionary, String joinTransactionId) {
149194
this.db = db;
150-
@@ -136,6 +139,7 @@ class ClusterTransactionImpl implements ClusterTransaction {
195+
@@ -144,6 +147,7 @@ class ClusterTransactionImpl implements ClusterTransaction {
151196
if (ndbTransaction != null) {
152197
ndbTransaction.close();
153198
ndbTransaction = null;
154199
+ isPartitionKeySet = false;
155200
}
156201
}
157202

158-
@@ -644,7 +648,14 @@ class ClusterTransactionImpl implements ClusterTransaction {
203+
@@ -656,7 +660,14 @@ class ClusterTransactionImpl implements ClusterTransaction {
159204
throw new ClusterJFatalInternalException(
160205
local.message("ERR_Partition_Key_Null"));
161206
}
207+
- this.partitionKey = (PartitionKeyImpl)partitionKey;
162208
+ if (HOPS_PK_FIX) {
163209
+ if (!isPartitionKeySet) {
164-
this.partitionKey = (PartitionKeyImpl)partitionKey;
210+
+ this.partitionKey = (PartitionKeyImpl)partitionKey;
165211
+ isPartitionKeySet = true;
166212
+ }
167213
+ } else {
@@ -171,28 +217,31 @@ index ffb2b6a8..8f383525 100644
171217

172218
public String getCoordinatedTransactionId() {
173219
diff --git a/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/DbImpl.java b/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/DbImpl.java
174-
index f39cc103..162d449e 100644
220+
index 6b1b396f..ee835930 100644
175221
--- a/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/DbImpl.java
176222
+++ b/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/DbImpl.java
177-
@@ -264,7 +264,9 @@ class DbImpl implements com.mysql.clusterj.core.store.Db {
223+
@@ -271,7 +271,11 @@ class DbImpl implements com.mysql.clusterj.core.store.Db {
178224
handleError (ndbTransaction, ndb);
179225
return ndbTransaction;
180226
}
181227
- key_part_ptrArray = Key_part_ptrArray.create(keyPartsSize + 1);
182-
+ while (key_part_ptrArray == null) {
183-
+ key_part_ptrArray = Key_part_ptrArray.create(keyPartsSize + 1);
184-
+ }
228+
+
229+
+ while (key_part_ptrArray == null) {
230+
+ key_part_ptrArray = Key_part_ptrArray.create(keyPartsSize + 1);
231+
+ }
232+
+
185233
try {
186234
// the key part pointer array has one entry for each key part
187235
// plus one extra for "null-terminated array concept"
188236
diff --git a/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/NdbRecordSmartValueHandlerImpl.java b/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/NdbRecordSmartValueHandlerImpl.java
189-
index 84e8f5f7..38c520ca 100644
237+
index 44366a6e..c10d4ffa 100644
190238
--- a/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/NdbRecordSmartValueHandlerImpl.java
191239
+++ b/storage/ndb/clusterj/clusterj-tie/src/main/java/com/mysql/clusterj/tie/NdbRecordSmartValueHandlerImpl.java
192-
@@ -76,14 +76,14 @@ public class NdbRecordSmartValueHandlerImpl implements SmartValueHandler {
240+
@@ -83,15 +83,15 @@ public class NdbRecordSmartValueHandlerImpl implements SmartValueHandler {
193241
/** Finalize this object. This method is called by the garbage collector
194242
* when the proxy that delegates to this object is no longer reachable.
195243
*/
244+
- @SuppressWarnings("deprecation")
196245
- protected void finalize() throws Throwable {
197246
- if (logger.isDetailEnabled()) logger.detail("NdbRecordSmartValueHandler.finalize");
198247
- try {
@@ -201,34 +250,15 @@ index 84e8f5f7..38c520ca 100644
201250
- super.finalize();
202251
- }
203252
- }
204-
+// protected void finalize() throws Throwable {
205-
+// if (logger.isDetailEnabled()) logger.detail("NdbRecordSmartValueHandler.finalize");
206-
+// try {
207-
+// release();
208-
+// } finally {
209-
+// super.finalize();
210-
+// }
211-
+// }
253+
+// @SuppressWarnings("deprecation")
254+
+// protected void finalize() throws Throwable {
255+
+// if (logger.isDetailEnabled()) logger.detail("NdbRecordSmartValueHandler.finalize");
256+
+// try {
257+
+// release();
258+
+// } finally {
259+
+// super.finalize();
260+
+// }
261+
+// }
212262

213263
/** Release any resources associated with this object.
214264
* This method is called by the owner of this object.
215-
diff --git a/storage/ndb/src/ndbjtie/NdbApiWrapper.hpp b/storage/ndb/src/ndbjtie/NdbApiWrapper.hpp
216-
index bc726f5a..88e296e2 100644
217-
--- a/storage/ndb/src/ndbjtie/NdbApiWrapper.hpp
218-
+++ b/storage/ndb/src/ndbjtie/NdbApiWrapper.hpp
219-
@@ -3517,7 +3517,15 @@ struct NdbApiWrapper {
220-
Ndb_cluster_connection__set_name
221-
( Ndb_cluster_connection & obj, const char * p0 )
222-
{
223-
+ fprintf(stdout,"\n\nLogical Clocks AB. Hops custom libndbclient.so vVERSION\n");
224-
+ fprintf(stdout,"Set name called. Setting Name to: %s \n",p0);
225-
obj.set_name(p0);
226-
+ //obj.set_recv_thread_activation_threshold(0);
227-
+ //int th = obj.get_recv_thread_activation_threshold();
228-
+ //fprintf(stderr,"Recv thread activation threshold is %d\n",th);
229-
+ Uint16 cpu_array[1] = {0};
230-
+ obj.set_recv_thread_cpu(cpu_array,1,0);
231-
+ fprintf(stdout,"Set the cpu affinity for recv thread to CPU 0\n\n");
232-
}
233-
234-
static void

NDB/upgrade-ndb.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ patch -p1 < clusterj-fix.patch
3333
BLD=$TMP/mysql-cluster-gpl-"$V"/bld
3434
mkdir $BLD
3535
cd $BLD
36-
cmake .. -DBUILD_CONFIG=mysql_release -DCPACK_MONOLITHIC_INSTALL=true -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/tmp
36+
cmake .. -DBUILD_CONFIG=mysql_release -DCPACK_MONOLITHIC_INSTALL=true -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/tmp -DWITH_NDB_JAVA=ON -DWITH_NDBCLUSTER=ON
3737
make -j$(expr $(nproc))
3838

3939
#deploy clusterj to kompics repo
40-
mvn deploy:deploy-file -Dfile=storage/ndb/clusterj/clusterj-"$V".jar -DgroupId=com.mysql.ndb -DartifactId=clusterj-hops-fix -Dversion=$V -Dpackaging=jar -DrepositoryId=Hops -Durl=https://bbc1.sics.se/archiva/repository/Hops
40+
mvn deploy:deploy-file -Dfile=storage/ndb/clusterj/clusterj-"$V".jar -DgroupId=com.mysql.ndb -DartifactId=clusterj-hops-fix -Dversion=$V -Dpackaging=jar -DrepositoryId=Hops -Durl=https://archiva.hops.works/repository/Hops
4141

4242
#deploy libndbclient to kompics
4343
cd $SRC/../../

pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@
2626
<dependency>
2727
<groupId>com.mysql.ndb</groupId>
2828
<artifactId>clusterj-hops-fix</artifactId>
29-
<version>7.6.12</version>
29+
<version>8.0.21</version>
3030
</dependency>
3131

3232
<dependency>
3333
<groupId>mysql</groupId>
3434
<artifactId>mysql-connector-java</artifactId>
35-
<version>5.1.18</version>
35+
<version>8.0.21</version>
3636
</dependency>
3737
<dependency>
3838
<groupId>${project.groupId}</groupId>

src/main/java/io/hops/metadata/ndb/mysqlserver/HopsSQLExceptionHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*/
1919
package io.hops.metadata.ndb.mysqlserver;
2020

21-
import com.mysql.jdbc.MysqlErrorNumbers;
21+
import com.mysql.cj.exceptions.MysqlErrorNumbers;
2222
import io.hops.exception.StorageException;
2323
import io.hops.exception.TransientStorageException;
2424

src/main/java/io/hops/metadata/ndb/mysqlserver/MySQLQueryHelper.java

-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
*/
1919
package io.hops.metadata.ndb.mysqlserver;
2020

21-
import com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException;
2221
import io.hops.exception.StorageException;
2322

2423
import java.sql.Connection;

src/main/resources/ndb-config.properties.template

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ com.mysql.clusterj.connection.pool.size=1
77
com.mysql.clusterj.max.transactions=1024
88
#com.mysql.clusterj.connection.pool.nodeids=
99

10-
io.hops.metadata.ndb.mysqlserver.data_source_class_name = com.mysql.jdbc.jdbc2.optional.MysqlDataSource
10+
io.hops.metadata.ndb.mysqlserver.data_source_class_name = com.mysql.cj.jdbc.MysqlDataSource
1111

1212
io.hops.metadata.ndb.mysqlserver.host=
1313
io.hops.metadata.ndb.mysqlserver.port=3306

0 commit comments

Comments
 (0)