Couchbase Server and Windows 10 Anniversary Edition Problems
Update: This issue has been resolved in Couchbase Server 4.6 Developer Preview. You can certainly continue to use Docker, but there is no longer a requirement with Windows 10 Anniversary Edition.
The Problem
Recently, I ran into some problems with my Couchbase Server 4.5 installation on my Windows 10 development box. The memcached process would crash over and over again with an error code 255.
After doing some research (and getting some assistance, thanks @ingenthr), I determined it’s a known bug in Couchbase Server introduced by the recent release of Windows 10 Anniversary Edition. Apparently, Couchbase Server uses a third party library which incorrectly uses some private Windows APIs for memory allocation. The Windows 10 Anniversary Edition update removed these API calls, causing the crashes. The bug report is filed with Couchbase as MB-20519.
The Workaround
The only known direct workaround is to uninstall the Windows 10 Anniversary Update. Personally, I don’t find this to be a very good solution. Additionally, based on the bug report, I’m not optimistic about a quick fix from Couchbase. It seems like there’s a lot of work involved, and it understandably isn’t urgent because Windows is only supported for development, not production.
I decided instead to play with Docker, and I was very pleasantly surprised at how easy it was to use Docker to get Couchbase Server running on a Windows box. It only took me a few minutes.
- Be sure that Hyper-V is installed on your machine via “Turn Windows features on or off” in Control Panel
- Install Docker for Windows (I used the Stable Channel)
- Start Docker (I did this as the last step of the installation)
- Right click the Docker icon in your system tray (next to the clock), and open Settings. Go to Shared Drives, and share your C drive. This will require your WIndows password.
-
Open Powershell and run this command to make a data folder:
mkdir $env:userprofile\Couchbase
-
Then run this command to startup the Docker container:
docker run -d --name db -p 8091-8094:8091-8094 -p 11207:11207 -p 11210-11211:11210-11211 -p 18091-18093:18091-18093 -v ${env:userprofile}/Couchbase:/opt/couchbase/var couchbase
- Once complete, open http://localhost:8091/ to complete server configuration
Notes
This configuration will always create the Docker container with the latest version of Couchbase Server, currently 4.5. Command line arguments can be used to alter this, see the Docker pages for Couchbase for more information.
This configuration puts all Couchbase data in your C:\Users\myusername\Couchbase folder. If you remove the Docker container and recreate, it will start up with your configuration and data already intact. If you want to start from scratch, delete this folder before recreating the Docker container.
There are a few of compatibility requirements for this solution:
- Hyper-V is incompatible with VirtualBox. If you are using VirtualBox, you should use a different solution.
- The client and management ports used by Couchbase must be available on your local machine.
- This setup only supports running a single Couchbase node, otherwise there would be network port contention.
Comments