Singlestore for Arm64 (M1 Macs)

Thank you, will let you know if this works for me.

2 Likes

Hi! Thank you so much for the blog post, I was able to set everything up, i can acess the Studio properly, but i can’t connect with it through JDBC, :frowning:

An exception or error caused a run to abort: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
	at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828)
	at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448)
	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)
	at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:251)
	at com.wiliot.TestUtils$.initDb(TestUtils.scala:34)
	at com.wiliot.TestUtils$.startSinglestoreDb(TestUtils.scala:41)
	at com.wiliot.assetTracking.AssetActorSpec.beforeAll(AssetActorSpec.scala:100)
	at org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:212)
	at org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
	at org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
	at com.wiliot.assetTracking.AssetActorSpec.run(AssetActorSpec.scala:27)
	at org.scalatest.tools.SuiteRunner.run(SuiteRunner.scala:45)
	at org.scalatest.tools.Runner$.$anonfun$doRunRunRunDaDoRunRun$13(Runner.scala:1346)
	at org.scalatest.tools.Runner$.$anonfun$doRunRunRunDaDoRunRun$13$adapted(Runner.scala:1340)
	at scala.collection.immutable.List.foreach(List.scala:392)
	at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:1340)
	at org.scalatest.tools.Runner$.$anonfun$runOptionallyWithPassFailReporter$24(Runner.scala:1031)
	at org.scalatest.tools.Runner$.$anonfun$runOptionallyWithPassFailReporter$24$adapted(Runner.scala:1010)
	at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:1506)
	at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1010)
	at org.scalatest.tools.Runner$.run(Runner.scala:850)
	at org.scalatest.tools.Runner.run(Runner.scala)
	at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2or3(ScalaTestRunner.java:38)
	at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:25)
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
	at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
	at com.mysql.cj.protocol.a.NativeProtocol.readMessage(NativeProtocol.java:581)
	at com.mysql.cj.protocol.a.NativeProtocol.readServerCapabilities(NativeProtocol.java:536)
	at com.mysql.cj.protocol.a.NativeProtocol.beforeHandshake(NativeProtocol.java:423)
	at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1431)
	at com.mysql.cj.NativeSession.connect(NativeSession.java:133)
	at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:948)
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:818)
	... 25 more
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
	at com.mysql.cj.protocol.FullReadInputStream.readFully(FullReadInputStream.java:67)
	at com.mysql.cj.protocol.a.SimplePacketReader.readHeaderLocal(SimplePacketReader.java:81)
	at com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:63)
	at com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:45)
	at com.mysql.cj.protocol.a.NativeProtocol.readMessage(NativeProtocol.java:575)
	... 31 more


Process finished with exit code 0

You have any idea how i can fix this?

1 Like

Hello, we have a good news.

With our 7.8.11 release, you can now run SingleStoreDB on M1 Macs. Provide feedback on this thread if you encounter any issue.

Make sure to pull the latest version when installing it:

docker run -i --init \
    --name singlestore-ciab \
    -e LICENSE_KEY=<YOUR_LICENSE_FROM_PORTAL.SINGLESTORE.COM> \
    -e ROOT_PASSWORD=<YOUR_DESIRED_DATABASE_ROOT_PASSWORD> \
    -p 3306:3306 -p 8080:8080 \
    singlestore/cluster-in-a-box:latest
6 Likes

What great news! :tada: Yay!

1 Like

That is amazing! But when I run your command with my variables, I still get the message that it is running in amd64 mode…


Am I doing something wrong?

1 Like

I also experience that but it should work once you connect with it. Let me know if it doesn’t work.

2 Likes

Ahh, yeah I started looking at Singlestore yesterday, so it was already working for me. But it is so slow on a M1 Pro when I compare it to an external server that is amd64 over the internet…

1 Like

What is running slow? Your feedback will help us improve the experience. As a note, this release on MAC is more for dev/test scenario.

2 Likes

Great news, waited for this a long time.

Will M1 support be available only from 7.8.11 and above ?

Our prod env. is 7.6.22,
and I wonder if it’s supported, best practice is to have same version for dev & prod envs.

Thanks in advance,
Ziv

1 Like

Hello Ziv!

I am glad that you are happy with the release! Correct, support for Mac M1 will not be backward compatible. I would have the same version for dev/staging/production environments because you don’t want to use functionalities that will not be compatible in the production environment. My advise would be to upgrade both environments to the same version.

If you use the 7.8.11 on your Mac M1 for development (do not use it for production), here are the release notes in 7.8.

Thank you,
Arnaud

2 Likes

Someone was able to run the new docket image that supports M1 using testcontainers from a project?

1 Like

Hello everyone on the forum.
We have implemented a better image configuration that should enable less resource usage on your MAC M1.

Here is the repo that you should use: GitHub - singlestore-labs/singlestoredb-dev-image: The SingleStoreDB Dev Container is the fastest way to develop with SingleStore on your laptop or in a CI/CD environment.

2 Likes