hashicorp / raft-mdb

LMDB backend for Raft
Mozilla Public License 2.0
133 stars 35 forks source link

Update LMDB? #4

Closed bmatsuo closed 8 years ago

bmatsuo commented 8 years ago

I noticed you are using a fork of gomdb. The original author of gomdb is no longer maintaining it. And it seems the hashicorp (armon) fork of gomdb is in need of maintenance in order to work with go1.6 (new cgo pointer passing restrictions make gomdb unhappy).

I have been maintaining independent bindings into LMDB for a while now. And I have taken the liberty of porting raft-mdb implementation over to my bindings. The net diff is -100 lines because my bindings use BoltDB style transaction management by default and I have implemented an abstraction over cursors for scanning database ranges.

My fork is https://github.com/bmatsuo/raft-mdb (compare) (edit: whoops misplaced the compare link at first)

My bindings are https://github.com/bmatsuo/lmdb-go

If you are interested in switching to lmdb-go I can open a pull request to port raft-mdb. I am actively maintaining lmdb-go and the C library is up to date (0.9.18 as of 2016-04-25) and has seen many fixes since 0.9.14 (the version of https://github.com/armon/gomdb).

Let me know if this is important to you. It's not really clear to me if Hashicorp is using raft-mdb in production builds of Consul. But if so I think upgrading at some point is probably a good idea.

armon commented 8 years ago

@bmatsuo Please open a PR for us! We have actively moved away to BoltDB, but would be good to still use an up-to-date LMDB.