Why we started to hate OpenSSL – but are still thankful

01GeneralTags:

ArangoDB has an HTTP interface to talk to its clients. Sometimes people want to secure this connection and use SSL or TLS instead. That is where we are using OpenSSL. It provides all the methods to implemented HTTPS on top of an HTTP server. It worked well and the corresponding code is only some 300 lines of C++ code. The biggest obstacle was the documentation. You can basically only learn from examples. That’s what we did. However, we finally encountered a bizarre bug. ArangoDB uses a number of threads to handle I/O in an asynchronous manner. The underlying library for I/O is libev. We span three threads by default each with its own event loop. With HTTP everything is working fine and even HTTPS was no problem.

Until we made a mistake during testing. We started ArangoDB as HTTPS server and ran our unittests. Everything showed green until we connected with an HTTP client to the HTTPS port by accident. The client could not connect and returned an error message – as expected. Meanwhile the unittests started to fail for a few seconds and then recovered. What! This is a completely different socket connection. How is it possible that one connection influences the other?

First idea: We managed to somehow mangle the sockets. So we started to print out file descriptors for accept, read and write, close. As there are a lot of unittests, the output is quite messy. But after hours of debugging, we convinced yourself that everything looked fine.
More info

ArangoDB 1.4.0 & Raspberry PI

02ARM: Raspberry + Co.Tags: ,

This is a follow to the post about ArangoDB 1.3 running on Raspberry PI. With the release of ArangoDB 1.4.0 I now tried to compile it again. As all patches required for 1.3 are part of 1.4.0 it is now much easier.

After a few hours, everything (including V8 & ICU) is compiled and you can start ArangoDB on a raspberry

and the shell in another window

or point your browser to http://pi:8529/

However, if you do not want to wait for hours, I’ve tried to build a debian package, which can be downloaded from here:

This has not been tested in detail. So any feedback or improvements are welcome.

ArangoDB on Raspberry PI

00GeneralTags:

During the ArangoDB Hackathon weekend, we tried to compile ArangoDB on a Raspberry PI using Raspbian as operating system.

ArangoDB needs some external libraries in order to compile

  • libev
  • ICU
  • V8
  • zlib

Libev, ICU and zlib compiled without problems. Raspbian comes with a precompiled version of V8 – but it’s too old for ArangoDB. So, we had to compile V8 ourself. A single make run takes hours and hours to complete. Using the default parameters it complains about wrong flags for the hard-float ABI. After some googling and endless hours of waiting for the compile to complete, we found a set of flags that finally worked.

  • you need to pass the options -march=armv6 to the compiler and linker
  • you need to disable CAN_USE_VFP3_INSTRUCTIONS
  • use -O2 instead of -O3 (I’m not sure if this is necessary or not)

If you downloaded ArangoDB 1.3, use the following diff to patch the Google V8 Makesystem

More info

ArangoDB on Raspberry PI

08GeneralTags:

During the ArangoDB Hackathon weekend, we tried to compile ArangoDB on a Raspberry PI using Raspbian as operating system.

ArangoDB needs some external libraries in order to compile

  • libev
  • ICU
  • V8
  • zlib

Libev, ICU and zlib compiled without problems. Raspbian comes with a precompiled version of V8 – but it’s too old for ArangoDB. So, we had to compile V8 ourself. A single make run takes hours and hours to complete. Using the default parameters it complains about wrong flags for the hard-float ABI. After some googling and endless hours of waiting for the compile to complete, we found a set of flags that finally worked.

  • you need to pass the options -march=armv6 to the compiler and linker
  • you need to disable CAN_USE_VFP3_INSTRUCTIONS
  • use -O2 instead of -O3 (I’m not sure if this is necessary or not)

More info

ArangoDB on Uberspace

011GeneralTags:

How to use ArangoDB on Uberspace?

ArangoDB is (not yet) available on Uberspace. So how to use it? Basically Uberspace is a Centos 6 linux system, so you can use the executables provided. I’ve created a small shell script to install ArangoDB on an Uberspace system. Note that this is still experimental.

Log in and execute

During the installtion you have the optin to bind the server to an IPv4 address, an IPv6 address, localhost, or unix domain sockets. Please note that – with the exception of domain sockets – everyone can connect to this socket. So, you should supply a password when using normal sockets.

This will create a folder “arangodb” with the executables and JavaScript files for ArangoDB. It also creates to shell scripts “arangod.sh” and “arangosh.sh” to start the server and the shell with the correct path. You can move these files into your “bin” folder.

Do you like ArangoDB?
icon-githubStar this project on GitHub.
close-link