Commit Graph

702 Commits

Author SHA1 Message Date
mpilman a5122dc83c Don't build go bindings in IDE mode
Fixes #1171
2019-02-26 18:03:08 -08:00
Ryan Worl 05d347e194 Push byte slice instead of string onto the stack 2019-02-25 19:08:29 -05:00
Ryan Worl 4dd04862c7 Flatten if statements 2019-02-25 19:05:45 -05:00
Ryan Worl 292bb6ab0f Make `versionstampLength` constant equal Versionstamp actual length. 2019-02-25 18:57:28 -05:00
Ryan Worl b2f26224b9 Revert unintentional change back to old API 2019-02-25 18:41:57 -05:00
Ryan Worl 7ac098dc0d Add Versionstamp support to the Go Tuple layer 2019-02-25 18:39:14 -05:00
A.J. Beamon ad8bfc1b8f
Merge pull request #1166 from alecgrieser/tuple-performance-improvements
Java Tuples: Hash and equality improvements
2019-02-25 15:10:45 -05:00
mpilman 6c1f64ed22 Fixed c binding tests for IDE 2019-02-19 15:16:59 -08:00
mpilman 9b14aeb156 Tell cmake not to link/install on ide build 2019-02-19 15:16:59 -08:00
Alec Grieser 9bf4940249
Memoize Tuple hashes and do not pack for equality check 2019-02-18 08:54:25 -08:00
Alec Grieser c6947db091
Add a basic performance tester of Java Tuples 2019-02-18 08:54:21 -08:00
Vishesh Yadav e05b53d755 Merge remote-tracking branch 'apple/master' into task/tls-upgrade 2019-02-15 20:37:07 -08:00
mpilman 0bbbfb6ee3 Address Andrew's review comments 2019-02-15 00:01:42 -08:00
mpilman 0754ce1a43 fixef formatting of go code 2019-02-15 00:01:42 -08:00
mpilman 46119dce0d Disabled c-bindin tests on Windows 2019-02-15 00:01:42 -08:00
mpilman 4266429dcf Fixed python dependency 2019-02-15 00:01:42 -08:00
mpilman ddddda7328 docker-compose can now build rpm
weirdly it still generates a foundationd-unspecified
rpm. However, it is empty and can be ignored for now
2019-02-15 00:01:42 -08:00
mpilman 6529e2790b several minor bug fixes 2019-02-15 00:01:42 -08:00
mpilman ffaaaf5028 build fat-jar with packages
The packages target will now build the fat jar and
it will place the jar file into the packages directory
2019-02-15 00:01:42 -08:00
mpilman 458c14ffcd Ruby bindings for cmake + gem generation
make packages will now also generate a gem file and
put it into the packages directory within the build directory
2019-02-15 00:01:42 -08:00
mpilman 7ae3cc8ce4 Fix go binding dependency paths
Before this commit, the go bindings would
always be recompiled
2019-02-15 00:01:42 -08:00
mpilman 9b7dcc4ed5 flow, python, and go bindings 2019-02-15 00:01:42 -08:00
mpilman 44cb835ffe build python sdist 2019-02-15 00:01:42 -08:00
mpilman 50a01fb8ce Build flow-binding 2019-02-15 00:01:42 -08:00
mpilman 733ba0a751 Build c_performance_test and rwy_benchmark
addresses #1035
2019-02-15 00:01:42 -08:00
mpilman 75f692b931 simplify actorcompiler and target to compile coveragetool 2019-02-15 00:01:42 -08:00
mpilman 70545e07d8 Added documentation on how to build the jar-files 2019-02-15 00:01:42 -08:00
mpilman 1ed149e624 Add option to build fat jar 2019-02-15 00:01:42 -08:00
mpilman f601aa7407 Make Java an optional dependency 2019-02-15 00:01:42 -08:00
Vishesh Yadav 907446d0ce Merge remote-tracking branch 'apple/master' into task/tls-upgrade 2019-02-14 11:37:38 -08:00
Andrew Noyes 067a445e06 Replace unused _ variables with wait(success(...)) 2019-02-12 17:30:30 -08:00
Colin Adler 1b04f9a71a fixup! fixup! fixup! fixup! Add support for modules 2019-02-12 11:27:43 -08:00
Colin Adler 8be2de8cc2 fixup! fixup! fixup! Add support for modules 2019-02-12 11:27:43 -08:00
Colin Adler 789bc6d4ee fixup! fixup! Add support for modules 2019-02-12 11:27:43 -08:00
Colin Adler 676e1ceb73 fixup! Add support for modules 2019-02-12 11:27:43 -08:00
Colin Adler dc38c68c76 Add support for modules
Because of how fdb-go-install.sh functions, it's necessary to use to use
the folder that the script installs to, located at
$GOPATH/src/github.com/apple/foundationdb/bindings/go. Since modules
will use the version from
$GOPATH/pkg/mod/github.com/apple/foundationdb/bindings/go and has a checksum of it
stored in go.sum, it's not possible to use this package currently with modules enabled.

I believe the solution to this problem is to use replace directives:
https://github.com/golang/go/wiki/Modules#when-should-i-use-the-replace-directive

After using the install script, adding
`replace github.com/apple/foundationdb/bindings/go => $GOPATH/src/github.com/apple/foundationdb/bindings/go`
will allow Go programs to be built normally with modules.

Note: $GOPATH cannot be used directly and must be expanded into an absolute
or relative path.

This go.mod must be added for replace directives to work correctly.
2019-02-12 11:27:43 -08:00
Colin 2f83e595cf Disable modules in Golang binding install script 2019-02-12 11:27:43 -08:00
A.J. Beamon 32b3c2ad69 Add comment for the code where we replace the semaphore in the exception handler 2019-02-11 10:35:29 -08:00
A.J. Beamon 5bf7e72fc5 If the semaphore acquire is interrupted (e.g. by a signal), then replace it with a new one so that subsequent futures will still work. 2019-02-11 10:22:19 -08:00
A.J. Beamon 8960670694 Python now blocks on a future in Python rather than in native code to preserve Python's signal handling functionality. In particular, this means that ctrl-c will work in the REPL. 2019-02-08 13:51:01 -08:00
A.J. Beamon 4c0481da40 Fix comment in go bindings that describes an old implementation. Add a release note for the new Go bindings change and add links to the existing release notes entries. 2019-02-08 12:38:38 -08:00
A.J. Beamon 093f4d9b83
Merge pull request #1091 from ajbeamon/fix-python-onready
Python: _CBFUNC should be defined outside init_c_api
2019-02-08 11:26:51 -08:00
A.J. Beamon 685242fbfc
Merge pull request #1092 from atn34/trace-format-network-option
Add trace_format network option
2019-02-08 10:52:50 -08:00
A.J. Beamon b61722e3ab
Merge pull request #1010 from pjvds/patch-2
fdb.Key implements fmt.Stringer interface
2019-02-08 09:47:15 -08:00
mpilman e45295a1f5 Added support for TLS 2019-02-07 15:37:04 -08:00
mpilman f03cd6aee1 make c bindings work on Windows 2019-02-07 15:37:04 -08:00
mpilman 8a94d80deb fdbservice and fdbrpc now compiling 2019-02-07 15:37:04 -08:00
mpilman 7a858b902d Most of FDB compiling on Windows with cmake 2019-02-07 15:37:04 -08:00
A.J. Beamon 192a48105c
Merge pull request #1124 from apple/release-6.0
Merge Release 6.0 into master
2019-02-07 12:22:40 -08:00
Pieter Joost van de Sande 8f181fde3b replace strings builder with bytes buffer 2019-02-03 20:48:21 +01:00
Balachandar Namasivayam 84a7fd1254 Add missing file fdbimpl_v609.rb to the package 2019-01-31 15:36:14 -08:00
Tim Guggenmos dd4d9b104b
Staying consistent with Pointer syntax
Space after '*' instead of before it
2019-01-29 10:07:49 +01:00
Andrew Noyes 768d7678be Add trace_format network option 2019-01-28 15:14:17 -08:00
A.J. Beamon ec995ebef0 _CBFUNC should be defined outside init_c_api, both because it doesn't depend on the C API and because it is used elsewhere and wasn't available globally as previously written 2019-01-25 11:32:49 -08:00
A.J. Beamon 2173e0acda Remove ClusterOptions from generated sources in Java 2019-01-25 09:30:02 -08:00
Evan Tschannen 1d7fec3074 Merge commit '048bfc5c368063d9e009513078dab88be0cbd5b0' into task/tls-upgrade-2
# Conflicts:
#	.gitignore
2019-01-24 17:43:06 -08:00
Andrew Noyes 1c1e42396c ClusterOptions.java is no longer generated 2019-01-24 16:04:56 -08:00
Andrew Noyes 6b34d62918 Fix GENERATED_JAVA_DIR 2019-01-24 15:59:18 -08:00
Andrew Noyes aa566a755f Account for file mv's/rm's in java bindings cmake 2019-01-24 15:41:27 -08:00
Alec Grieser 04b94e74c7
Merge pull request #942 from ajbeamon/remove-cluster-from-bindings
Remove cluster from bindings
2019-01-24 14:39:09 -08:00
Andrew Noyes 4bca5dad73 Fix _bit_length for 0 and negative numbers 2019-01-22 10:09:58 -08:00
Andrew Noyes 5a6f82a75b bit_length python 2.6 compat 2019-01-22 10:09:03 -08:00
A.J. Beamon e9ffe09b8b Go bindings reported the wrong required version when loading an incompatible version of fdb_c. 2019-01-14 10:55:28 -08:00
A.J. Beamon 401f8a6774 Python and Ruby bindings displayed an unhelpful error if trying to load an old incompatible fdb_c with a new binding. 2019-01-14 10:41:54 -08:00
A.J. Beamon 627b785a24 Fix: null handling for cluster file paths didn't work after merge 2019-01-11 10:04:05 -08:00
A.J. Beamon 8451c0cfc1 Favor nullptr in JNI code. 2019-01-10 13:13:21 -08:00
A.J. Beamon bfa97d7ff2 Address review comments 2019-01-10 12:28:14 -08:00
A.J. Beamon 11cce3731b Merge branch 'master' into remove-cluster-from-bindings
# Conflicts:
#	bindings/c/fdb_c.cpp
2019-01-10 11:58:34 -08:00
Pieter Joost van de Sande ead5bb5bc6 add Printable example to docs 2019-01-10 11:10:52 +01:00
Pieter Joost van de Sande b96c21210a fix padding in key printing 2019-01-10 08:44:30 +01:00
Pieter Joost van de Sande 696a876fd4 fix String duplication for fdb.Key 2019-01-09 00:17:23 +01:00
Pieter Joost van de Sande 4722fa0667 change fdb string representation to common format 2019-01-09 00:03:44 +01:00
Pieter Joost van de Sande 0401d04380
fdb.Key implements fmt.Stringer interface
Add the ability to get a human readable string representation of a fdb.Key by satisfying the fmt.Stringer interface. This allows keys to be used with the fmt package.
2019-01-08 09:44:16 +01:00
Bhaskar Muppana 5a8419e5cf Move Java specific setup into bindings/java/CMakeLists.txt
and s/SET/set
2019-01-02 21:19:08 -08:00
Bhaskar Muppana aa2a76ef4c
Merge pull request #981 from alexmiller-apple/cmake
Add a CMake build system
2019-01-02 18:50:15 -08:00
anoyes 6a4d87802b Replace & operator with variadic function 2018-12-28 11:33:42 -08:00
Markus Pilman df0f491c29 Some more improvements to the build and preparations for packaging 2018-12-13 15:04:13 -08:00
Markus Pilman f8eac70700 Fixed C bindings DLLEXPORT and Java bindings 2018-12-13 14:59:36 -08:00
Markus Pilman 5fafeaf219 added bindings to cmake build 2018-12-13 14:54:38 -08:00
Markus Pilman 4833afea53 CMake compiles fdb c bindings 2018-12-13 14:54:13 -08:00
Bryant Luk 2379552aea
Fix Go bindings possible nested comment warnings
When using the Go bindings in a project, you can get compilation
warnings for the `/*` in the comment blocks. These warnings seem
unnecessary.

Warning is:

\# github.com/apple/foundationdb/bindings/go/src/fdb
In file included from _cgo_export.c:4:
cgo-gcc-export-header-prolog:43:1: warning: '/*' within block comment [-Wcomment]
cgo-gcc-export-header-prolog:44:1: warning: '/*' within block comment [-Wcomment]
2018-12-13 15:41:01 -06:00
Vishesh Yadav e8e01b2406 Remove unused localAddress parameter from newNet2 and Net2 classes 2018-12-13 13:36:52 -08:00
Aaron Greenlee a1a88b2f47
Fixed apparent typo in help response 2018-12-08 17:27:32 -05:00
A.J. Beamon 97847f517b throw platform_error; -> throw platform_error();. Convert some spaces to tabs. 2018-11-28 12:56:57 -08:00
Alec Grieser 3a38288d35
remove whitespace to fix go fmt check 2018-11-28 09:09:35 -08:00
A.J. Beamon 975711c389 Merge branch 'release-6.0' of github.com:apple/foundationdb
# Conflicts:
#	documentation/sphinx/source/release-notes.rst
2018-11-27 09:50:39 -08:00
Alec Grieser d462315809
Merge pull request #908 from pjvds/patch-1
document Begin and End members of KeyRange
2018-11-27 09:02:50 -08:00
Pieter Joost van de Sande 080464ba38
specify type on both begin and end field 2018-11-27 17:11:42 +01:00
Pieter Joost van de Sande 1c2de49bf2
match KeyRange docs with the rest of the docs 2018-11-27 08:19:46 +01:00
A.J. Beamon d1e6c81d99 The binding tester wouldn't align keys that had nan in them. Also, the ruby tester generated a few keys with byte strings instead of unicode. 2018-11-26 15:31:40 -08:00
A.J. Beamon 96b9cbcfcf fdb_c.cpp needs access to the legacy types, the C binding test uses the new API, and a couple javadoc links fixed. 2018-11-26 13:07:36 -08:00
A.J. Beamon 890a0f3e82 Merge branch 'master' into remove-cluster-from-bindings
# Conflicts:
#	bindings/flow/fdb_flow.actor.cpp
2018-11-26 12:01:03 -08:00
A.J. Beamon b19ab6d3dc Don't use null as the cluster pointer if the cluster file path is null because the Java bindings don't work with a null cluster pointer. 2018-11-26 11:52:35 -08:00
Alex Miller d076999f9b Fix the fix of the build of the bindings target.
The bindings build was broken becaue fdb_c_performance_test failed to
link with errors of the form:

    /tmp/ccym9LhK.o: In function `clearAll':
    /opt/foundationdb/bindings/c/test/performance_test.c:130: undefined reference to `fdb_transaction_clear_range'
    /tmp/ccym9LhK.o: In function `insertRange':
    /opt/foundationdb/bindings/c/test/performance_test.c:139: undefined reference to `fdb_transaction_set'
    /tmp/ccym9LhK.o: In function `singleKey':
    /opt/foundationdb/bindings/c/test/performance_test.c:540: undefined reference to `fdb_transaction_set'
    ...

PR #901's e8f20e4 fixed this by adding `-shared` to the invocation line,
and thus doing a dynamic linking of libfdb_c.

As dynamically linking produced a working executable, this suggests that
the correct set of libraries are being linked, as the symbols can be
located eventually, just not in the right order, as the linker will
proactively not include unnecessary object files from static libraries.
And unfortunately, our performance test framework likely expects to be able
to copy the binary, and not have to worry about associated dynamically
linked libraries, so a statically linked binary is preferred.

The underlying cause of this link error is that the static library
preceeded the source code in the command line:

    /usr/bin/gcc -Werror -Wno-error=format -fPIC -DNO_INTELLISENSE -fvisibility=hidden -DNDEBUG=1 -Wreturn-type -fno-omit-frame-pointer -O2 -g -Llib -lfdb_c -lpthread -Ibindings/c -o bin/fdb_c_performance_test bindings/c/test/performance_test.c

This comes from the line in the Makefile:

    @$(CC) $(CFLAGS) $(fdb_c_tests_LIBS) $(fdb_c_tests_HEADERS) -o $@ bindings/c/test/performance_test.c

As we pass `-lfdb_c` before `performance_test.c`, when the linker is
considering libfdb_c.a, it sees that no symbols from any of the object
files are currently needed, and thus doesn't include them.  When we
proceprocess performance_test.c, we suddenly need these symbols, but
it's too late, as the linker only processes files left-to-right.

Thus, we can resolve this problem by passing -lfdb_c after performance_test.c

Also of note is that we only seem to have this problem because the link
line was crafted by hand instead of using link-wrapper.sh, which already
does the right thing.
2018-11-13 16:15:32 -08:00
Evan Tschannen e45952bc53 Merge branch 'release-6.0'
# Conflicts:
#	documentation/sphinx/source/release-notes.rst
#	fdbclient/BackupContainer.actor.cpp
#	fdbclient/BlobStore.actor.cpp
#	fdbclient/HTTP.actor.cpp
#	tests/BlobStore.txt
#	versions.target
2018-11-13 16:06:39 -08:00
Evan Tschannen abb7299e1d
Merge pull request #901 from AlvinMooreSr/bindings-build
Fixed build of bindings target
2018-11-13 12:31:35 -08:00
Alec Grieser 8424fc57ec
add period to comment 2018-11-13 11:55:54 -08:00
Alec Grieser 3c8347e724
add comments for some tricky int-packing code 2018-11-13 11:41:23 -08:00
Alec Grieser 7e4f84c60e
Merge remote-tracking branch 'upstream/release-6.0' into feature-bigint-support-go-ruby-aj 2018-11-13 11:28:10 -08:00
Evan Tschannen 4e54690005 Merge branch 'release-6.0'
# Conflicts:
#	fdbserver/DataDistribution.actor.cpp
#	fdbserver/MoveKeys.actor.cpp
2018-11-12 20:26:58 -08:00
Pieter Joost van de Sande 4f4f3ebb2d
document Begin and End members of KeyRange
This allows friendly hints by tools that have go doc integration or alike.
2018-11-12 21:51:06 +01:00
Evan Tschannen 4b5d0b4e2c Merge branch 'release-6.0'
# Conflicts:
#	documentation/sphinx/source/release-notes.rst
#	fdbclient/AsyncFileBlobStore.actor.cpp
#	fdbclient/AsyncFileBlobStore.actor.h
#	fdbclient/BlobStore.actor.cpp
#	fdbclient/BlobStore.h
#	fdbclient/HTTP.actor.cpp
#	fdbclient/ManagementAPI.actor.cpp
#	fdbclient/NativeAPI.actor.cpp
#	fdbrpc/LoadBalance.actor.h
#	fdbrpc/batcher.actor.h
#	fdbrpc/fdbrpc.vcxproj
#	fdbrpc/sim2.actor.cpp
#	fdbserver/DataDistribution.actor.cpp
#	fdbserver/DataDistributionTracker.actor.cpp
#	fdbserver/SimulatedCluster.actor.cpp
#	fdbserver/TLogServer.actor.cpp
#	fdbserver/masterserver.actor.cpp
2018-11-10 13:04:24 -08:00
Evan Tschannen a654183f63
Merge pull request #791 from ajbeamon/remove-cluster-from-iclientapi
Remove cluster from IClientApi (phase 2 of removing DB names)
2018-11-10 10:16:18 -08:00
Alvin Moore e8f20e409f Added shared library option to allow the c project tests to build 2018-11-08 08:40:56 -08:00
A.J. Beamon d38393a82f Key alignment in the binding tester results checking didn't properly determine the minimum available key. Add some comments to results checking code. 2018-11-01 12:38:00 -07:00
A.J. Beamon d02c37965d Merge branch 'release-6.0' into feature-bigint-support-go-ruby 2018-11-01 11:33:48 -07:00
A.J. Beamon 93cfec51c7 Add a test that's intended to test tuple encoding. Currently, it only checks the encoding of integers at and near the boundaries of every extra bit (i.e. 2^1, 2^2, 2^3, ...). Fixed some bugs in the binding tester results checking that made it hard to interpret results. Commit more instructions in a batch. 2018-10-31 14:18:28 -07:00
A.J. Beamon 5035c51d15 Some fixes to the type chosen for decoding integers in Go. Fix to ruby encoding at byte boundaries. Add execute bit to ruby tester. 2018-10-31 14:09:23 -07:00
A.J. Beamon 23d5382cea Add uint64 handling to golang stack tester tuples 2018-10-31 09:19:13 -07:00
A.J. Beamon 377f5e2c48 Add release notes and fix formatting 2018-10-30 15:06:47 -07:00
A.J. Beamon 42d101c517 Merge branch 'tuple-uint64' into feature-bigint-support-go-ruby
# Conflicts:
#	bindings/go/src/fdb/tuple/tuple.go
2018-10-30 14:23:26 -07:00
Justin Lowery bee8d12b24 remove multiple binary.Read calls and use a single type conversion instead 2018-10-30 14:06:03 -07:00
Justin Lowery f112ba4f07 restore NewBuffer calls, as buffer was emptied on Read calls when the value was a uint64 2018-10-30 14:06:03 -07:00
Justin Lowery 36b3818aef remove redundant calls to NewBuffer that use the bp slice. remove redundant declaration of retInt 2018-10-30 14:06:03 -07:00
Justin Lowery 0b00b4d99b keep original behavior related to decoding integers to int64, only using uint64 when needed 2018-10-30 14:06:03 -07:00
Justin Lowery 9909c1c959 add uint64 and uint types to the package documentation comments 2018-10-30 14:06:03 -07:00
Justin Lowery c6e9d2ff12 add uint64 encoding and decoding 2018-10-30 14:06:03 -07:00
A.J. Beamon b96d462ad3
Merge pull request #878 from cespare/range-error
Fix small error-handling bug in Go bindings
2018-10-29 18:12:40 -04:00
Caleb Spare edc87a9138 Fix small error-handling bug in Go bindings 2018-10-29 14:48:30 -07:00
A.J. Beamon 45e1e563ba Reword documentation for Strinc 2018-10-29 14:24:06 -07:00
A.J. Beamon 0ec1790d76 Document the Strinc function in the go bindings 2018-10-29 14:06:59 -07:00
Ofek Lev 4bd9efc4fc
Update vendored Python module six 2018-10-25 23:46:49 -04:00
A.J. Beamon 2be1cabc72 Support for big integers in go and ruby tuple layers 2018-10-24 15:50:07 -07:00
Evan Tschannen 2f4e7fad48 Merge branch 'master' of github.com:apple/foundationdb 2018-10-15 18:39:46 -07:00
Evan Tschannen 0217aed74c Merge branch 'release-6.0'
# Conflicts:
#	bindings/go/README.md
#	documentation/sphinx/source/release-notes.rst
#	fdbserver/MasterProxyServer.actor.cpp
#	versions.target
2018-10-15 18:38:51 -07:00
A.J. Beamon 9983c534e6 Release 6.0.13 preparation 2018-10-10 13:44:16 -07:00
A.J. Beamon a2630a68a6 We can't use async as a variable name in python 3.7 because it's now a keyword. Support gevent's new 'async_' name. 2018-10-09 09:51:04 -07:00
A.J. Beamon b3e271bc2a Document the mutex shenanigans used to implement block until ready 2018-10-08 15:17:37 -07:00
A.J. Beamon d5357d2439 Update all of the bindings to use the new C API and deprecate or remove unneeded parts of their APIs. 2018-10-02 15:28:46 -07:00
A.J. Beamon 983a5bd390 Bump API version to 610 2018-09-26 10:58:07 -07:00
A.J. Beamon 1b259dbc9d Initial work to remove clusters from our C API 2018-09-26 10:27:55 -07:00
A.J. Beamon 3eb4355a48 Some various cleanup and fixes. Added "Cluster" to TransactionMetrics trace event. 2018-09-25 15:06:19 -07:00
A.J. Beamon 09fba0647e Use new instead of malloc; fix off by one. 2018-09-25 11:15:54 -07:00
A.J. Beamon 6ae50f7016 Change cluster objects to be a char* for the cluster file path. Remove IDatabase::createDatabase. DLApi::createDatabase deletes the temporary cluster it creates. 2018-09-25 11:01:09 -07:00
A.J. Beamon e55a87f6cd Merge branch 'merge-release-6.0-into-master' into remove-cluster-from-iclientapi 2018-09-24 08:22:35 -07:00
A.J. Beamon 92990d6aef Merge release-6.0 into master 2018-09-21 16:14:39 -07:00
A.J. Beamon c831051474 This removes the idea of clusters from IClientApi. 2018-09-21 15:58:14 -07:00
Alec Grieser dab056db2e
Merge pull request #777 from ajbeamon/merge-release5.2-into-release6.0
Merge branch 'release-5.2' into release-6.0, changing the API version…
2018-09-19 11:32:43 -07:00
A.J. Beamon 90c9822174 Merge branch 'release-5.2' into release-6.0, changing the API version in the go documentation in the process. 2018-09-19 11:31:11 -07:00
Alec Grieser 10a8e67266
Merge remote-tracking branch 'upstream/release-6.0' into merge-release-6.0 2018-09-11 21:49:59 -07:00
Alec Grieser 5128d9772d
cleverly use parentheses to ensure that the bitwise operation happens before the shift
This was casuing getUserVersion to return incorrect results if the user version was greater than 0x00FF.

Fixes #761
2018-09-10 18:18:13 -07:00
Alec Grieser f0c6db42db
Merge pull request #748 from ajbeamon/go-readme-update
Update go bindings README.
2018-09-06 14:40:29 -07:00
Bhaskar Muppana 920fd3fe97 Merge branch 'release-6.0' 2018-09-06 14:24:02 -07:00
Bhaskar Muppana 5e954a8d57 Merge remote-tracking branch 'upstream/release-5.2' into release-6.0 2018-09-06 13:29:31 -07:00
A.J. Beamon fdba3c0f05 Update go bindings README. 2018-09-06 13:19:13 -07:00
Evan Tschannen 90301f497f Merge branch 'release-6.0'
# Conflicts:
#	fdbclient/ManagementAPI.actor.cpp
#	fdbrpc/FlowTransport.actor.cpp
#	fdbrpc/TLSConnection.actor.cpp
#	fdbserver/DataDistribution.actor.cpp
#	fdbserver/Status.actor.cpp
#	fdbserver/storageserver.actor.cpp
#	fdbserver/workloads/StatusWorkload.actor.cpp
#	versions.target
2018-09-05 16:06:33 -07:00
A.J. Beamon cab47fec19
Merge pull request #733 from alecgrieser/000732-go-install-no-default-version
Remove default version from fdb-go-install script
2018-09-05 14:58:49 -07:00
Alec Grieser 2274bc0671
clarify some verbiage 2018-09-05 14:46:31 -07:00
Evan Tschannen 4eaff42e4f
Merge pull request #712 from ajbeamon/remove-database-name-internal
Eliminate use of database names (phase 1)
2018-09-05 10:35:00 -07:00
AlvinMooreSr f4b3299e23
Merge pull request #601 from AlvinMooreSr/python-setup
Changed python binding classifier
2018-09-04 12:57:02 -07:00
Alec Grieser 7c9e4d7d9f
remove default version from fdb-go-install script
Resolves: #732
2018-08-30 16:15:39 -07:00
A.J. Beamon f47b45c7e1
Merge pull request #710 from ajbeamon/deprecate-tls-plugin-option
Deprecate TLS_plugin option.
2018-08-27 12:24:48 -07:00
A.J. Beamon adfaa618e6 Filter version_too_old errors 2018-08-24 10:05:24 -07:00
A.J. Beamon f8262a2f95
Merge pull request #716 from alecgrieser/fdb-go-tag-update
Go bindings release tag update
2018-08-23 13:20:10 -07:00
Alec Grieser 11ab3bdb99
some go bindings README tweaks 2018-08-20 18:04:35 -07:00
Alec Grieser 74771c5b1d
switch to using new release branch convention for install script 2018-08-20 18:04:20 -07:00
A.J. Beamon 2a97139d5d This is the first step in eliminating the usage of database names in our code. The C API remains the same, but underneath that all usage of database names is eliminated. 2018-08-16 10:24:12 -07:00
A.J. Beamon bc0832bb55 Deprecate TLS_plugin option. Don't remove deprecated methods from Go bindings, since that breaks compatibility with old API versions. 2018-08-15 10:11:08 -07:00
Alex Miller bca324eaa6 More actorcompiler.h fixes and additions. 2018-08-14 15:50:26 -07:00
Alex Miller 535b5701e5 Rewrite all `Void _ = wait(...)` -> `wait(...)`.
This takes advantage of the new actorcompiler functionality to avoid
having duplicate definitions of `Void _` when trying to feed the
un-actorompiled source through clang.
2018-08-14 15:50:26 -07:00
A.J. Beamon 6af8c0d907 Prepopulated directories should have their partition state set. Filter commit_unknow_result errors if encountered in the directory test. 2018-08-13 13:35:48 -07:00
John Brownlee 9cad7c8a72 Merge remote-tracking branch 'upstream/release-5.2' into release-6.0-5.2-merge
# Conflicts:
#	documentation/sphinx/source/downloads.rst
#	documentation/sphinx/source/release-notes.rst
#	packaging/msi/FDBInstaller.wxs
#	versions.target
2018-07-31 13:17:37 -07:00
Alec Grieser a2b3c71a74
thread custom executors through FDBDatabase::run and FDBDatabase::read
Closes #640.
2018-07-30 16:53:07 -07:00
A.J. Beamon 2d8a6d1fd8
fix: cache databases by cluster file and DB name in golang bindings. 2018-07-30 10:10:03 -07:00
A.J. Beamon 16ba2732b8 fix: cache databases by cluster file and DB name in golang bindings. 2018-07-18 13:00:35 -07:00
Alvin Moore bc1098d889 Changed python binding classifier to that on approved list: https://pypi.org/pypi?%3Aaction=list_classifiers 2018-07-13 07:58:08 -07:00
Alec Grieser 46b8612566
bump API version from 520 to 600 2018-07-09 11:00:57 -07:00
Alex Miller 6c98aa8aac Fix not depending on FDBLibTLS.a and default TLS_LIBDIR to a sensible place. 2018-07-05 13:23:20 -07:00
Alex Miller 01659e34cc Move TLS libs into STATIC_LIBS to avoid having a make dependency on them.
And fix STATIC_LIBS to be cross platform.
2018-07-04 00:29:53 -07:00
Alvin Moore ab255b444f Added support for specifying location of LibreSSL libraries via define TLS_LIBDIR 2018-07-03 09:01:01 -07:00
Alvin Moore c3f88dbfe1 Merge branch 'master' of github.com:apple/foundationdb into tls-static 2018-07-01 23:13:57 -07:00
Alvin Moore 132e2d9267 Defined TLS build flags for projects
Updated TLS documentation
2018-07-01 22:49:39 -07:00
Alec Grieser be873001cc
Merge pull request #532 from drew-richardson/master
Avoid calls that can panic when handling errors
2018-07-01 21:54:18 -07:00
A.J. Beamon ea8a288a20
Merge pull request #537 from apple/release-5.2
Merge Release-5.2 into master
2018-06-27 15:55:58 -07:00
A.J. Beamon d8ca7a766c Change tree node state to have references to parent nodes and update merge logic accordinly. 2018-06-27 14:12:51 -07:00
A.J. Beamon a7158f96aa Address some review comments 2018-06-26 15:06:15 -07:00
A.J. Beamon 2ed452353f Merge branch 'release-5.2' into directory-tester-cleanup 2018-06-26 14:56:09 -07:00
Alvin Moore ef8de426d3 Changed the TLS_DISABLED macro
Disable TLS within Windows until working
2018-06-26 12:08:32 -07:00
Drew Richardson efdca64f15 Avoid calls that can panic when handling errors 2018-06-26 08:23:48 -07:00
Alvin Moore f8ce1de601 Added support for compiling TLS into binaries 2018-06-20 09:21:23 -07:00
Alex Miller a3601af2a6
Merge pull request #435 from Liuchang0812/wip-rename-future-in-c-binding
rename opaque types in c binding to avoid conflicts with the standard library
2018-06-18 13:55:33 -07:00
Chang Liu 5492ea7f8c rename opaque types in c binding to avoid conflicts with the standard library
Signed-off-by: Chang Liu <liuchang0812@gmail.com>
2018-06-13 11:09:42 +08:00
A.J. Beamon a1901701d6
Merge pull request #449 from jkominek/python-getfullargspec
use inspect.getfullargspec when available
2018-06-12 11:58:04 -07:00
A.J. Beamon e5488419cc Attempt to normalize trace events:
* Detail names now all start with an uppercase character and contain no underscores. Ideally these should be head-first camel case, though that was harder to check.
* Type names have the same rules, except they allow one underscore (to support a usage pattern Context_Type). The first character after the underscore is also uppercase.
* Use seconds instead of milliseconds in details.

Added a check when events are logged in simulation that logs a message to stderr if the first two rules above aren't followed.

This probably doesn't address every instance of the above problems, but all of the events I was able to hit in simulation pass the check.
2018-06-08 11:11:08 -07:00
Jay Kominek fb33412b3a use inspect.getfullargspec when available
getargspec was deprecated in python3, this should use
getfullargspec when available, and degrade gracefully
otherwise.
2018-06-08 01:07:18 -06:00
A.J. Beamon 1dbe24a6e8 In the Java directory layer, DirectoryLayer.exists returns true unconditionally when not passed a path. This is different than the other bindings, which run through the normal exists check, but which I believe will still ultimately return true. The major difference is that in Java, no read version is obtained, which can cause behavior differences in the binding tester. This adds a call to get the read version to the Java testers when processing the DIRECTORY_EXISTS instruction. 2018-05-30 15:38:50 -07:00
Alec Grieser 5e61fb30d6
Merge remote-tracking branch 'upstream/release-5.2' into merge-release-5.2 2018-05-30 12:02:36 -07:00
Alec Grieser 0c2e801d40
Merge remote-tracking branch 'upstream/release-5.1' into merge-release-5.1 2018-05-30 11:49:29 -07:00
Alec Grieser 1a0175bb01
Merge pull request #395 from dkoston/go-client-readme-add-mono
bindings/go: README.md: Add mono as dependency, add note about fdbver
2018-05-29 10:22:25 -07:00
Dave Koston 1a415a30b6 bindings/go: README.md: Add mono as dependency
Mono is required to install the go bindings on macOS and Windows (build-time only)
2018-05-29 10:31:37 -05:00
A.J. Beamon 026458baf3 Merge release-5.2 into master 2018-05-23 15:32:56 -07:00
A.J. Beamon e172a7f6f1 Fix spacing in build file 2018-05-23 15:01:13 -07:00
A.J. Beamon 48bf339843 Add indirection in the directory state tree so that merged nodes would continue sharing state through future merges. 2018-05-23 14:59:18 -07:00
A.J. Beamon 0b1bd4f765 Close transactions in ON_ERROR if the replace didn't succeed 2018-05-23 14:00:45 -07:00
A.J. Beamon 989a51e4a3 Java tester was failing to create new transactions properly in some cases 2018-05-23 13:05:15 -07:00
A.J. Beamon f52da485a9 Don't merge directory state tree entries that have the same ID. When merged, two entries should always take the smaller ID. 2018-05-23 12:20:05 -07:00
A.J. Beamon 1a39cd4a81 The directory state tree currently relies on some static members that need to be reset when rerunning the test. 2018-05-23 12:19:21 -07:00
A.J. Beamon addb822b91 Fix call to random.random() 2018-05-23 12:18:34 -07:00
A.J. Beamon fc69c34138 Extract directory state tree, add some tests, and fix up a couple things 2018-05-22 11:53:19 -07:00
A.J. Beamon f96b95a878 Ensure random prefixes for partitions and directory layer subspaces when doing comparison tests 2018-05-22 11:52:38 -07:00
A.J. Beamon 997d3eae80 Rework how the directory hierarchy state is maintained, add tracking for partitions and deleted directories, and don't allow using directories that are deleted partitions. 2018-05-18 16:24:59 -07:00
A.J. Beamon 5db549c203 Changes to print output 2018-05-18 16:24:03 -07:00
A.J. Beamon ce3623978e Merging children of DirListEntries now unifies the entries rather than just copying has_know_prefix 2018-05-18 09:41:54 -07:00
A.J. Beamon 9e9a81c96d DIRECTORY_MOVE and DIRECTORY_OPEN use the existing DirListEntries, if present 2018-05-18 09:39:27 -07:00
A.J. Beamon 7159dd5ce2 DIRECTORY_MOVE_TO reuses the same DirListEntry rather than creating a new one 2018-05-18 09:38:03 -07:00
A.J. Beamon 82821d17af Have the two copies of the default directory layer share the same DirListEntry. 2018-05-18 09:36:24 -07:00
A.J. Beamon b94fa1ddb0 Add missing COMMIT instruction after logging directories. 2018-05-18 09:34:46 -07:00
A.J. Beamon fd4312454b Some changes to debugging print statements 2018-05-18 09:33:28 -07:00
Alvin Moore 83c1754181 Modified the groupId to org.foundationdb 2018-05-17 12:53:57 -07:00
Alec Grieser e4cb178083
update api version to 520 in some flow tests 2018-05-10 18:12:41 -07:00
Alec Grieser a3e52424da
actually pass along new versionstamp position in nested versionstamp
addresses #356
2018-05-10 16:11:42 -07:00
Alec Grieser e5378083ec
honor length in Tuple.fromBytes when passed in
addresses #362
2018-05-10 15:27:01 -07:00
Alec Grieser 5ec391695b
regenerate generated.go with new TLS options 2018-05-10 15:26:25 -07:00
Evan Tschannen 8f984cb2c9 Merge branch 'release-5.2'
# Conflicts:
#	fdbrpc/TLSConnection.h
2018-05-10 09:13:22 -07:00
Alec Grieser b7f0e358b3
Merge pull request #340 from ajbeamon/move-thread-shutdown-hook-to-iclientapi
Move addNetworkThreadCompletionHook to IClientApi.
2018-05-09 14:45:50 -07:00
A.J. Beamon cfd50d83d4 Add comment and remove whitespace 2018-05-09 14:38:11 -07:00
A.J. Beamon 499a3c78dc Line ending fix 2018-05-09 10:32:02 -07:00
A.J. Beamon 33ba98c82c Fix indent 2018-05-09 10:12:37 -07:00
A.J. Beamon 330ac4875c Add flag to disable directory snapshot ops in the binding tester and use it in the flow bindings. 2018-05-09 10:12:37 -07:00
Alec Grieser 28ca911b6d
Merge pull request #341 from ajbeamon/bindingtester-flag-to-disable-directory-snapshot-ops
Add flag to disable directory snapshot ops in the binding tester
2018-05-09 10:00:02 -07:00
Justin Lowery 10410ca8cc
Remove empty line 2018-05-09 12:54:25 -04:00
A.J. Beamon 09937b8de7 Fix indent 2018-05-09 09:24:34 -07:00
Alec Grieser f3093642b3
Merge pull request #242 from alecgrieser/32437306-better-versionstamped-value
Unify SET_VERSIONSTAMPED_KEY and SET_VERSIONSTAMPED_VALUE API
2018-05-09 09:04:07 -07:00
Justin Lowery fa29a1b30c
Improve comment consistency in Go tuple package
Updates the first list of supported types, that can be encoded using a Tuple, to match the types that can be found in later comments within the tuple package.
2018-05-09 09:52:25 -04:00
A.J. Beamon 07273fb530 Add flag to disable directory snapshot ops in the binding tester and use it in the flow bindings. 2018-05-08 16:38:10 -07:00
A.J. Beamon 01a3360982 Move addNetworkThreadCompletionHook to IClientApi. 2018-05-08 16:33:43 -07:00
Evan Tschannen 7acdc314e4 Merge branch 'release-5.2'
# Conflicts:
#	fdbrpc/TLSConnection.actor.cpp
2018-05-08 13:22:53 -07:00
Evan Tschannen 1f6c6a886b Merge branch 'release-5.1' into release-5.2 2018-05-08 13:08:11 -07:00
A.J. Beamon ca720e1540
Merge pull request #297 from apple/release-5.2
Merge 5.2 to Master
2018-05-08 12:04:20 -07:00
Alec Grieser 47c9e4f923
update bindings and bindingtester that uses versionstamps to use new protocol
issue #148
2018-05-08 08:57:09 -07:00
Alec Grieser 6ee14bbb93
expose second versionstamp value type through vexillographer and add support in bindings and bindingtester 2018-05-08 08:57:09 -07:00
Julien Blache 83f86aa26f Switch repository clone URL from SSH to HTTPS 2018-05-07 15:20:48 -07:00
Julien Blache 899a173526 Check for FDB C library early on, add /usr/lib64 to Linux search path
Getting a warning at the end of the script is confusing as to the status
of the operation. Did it complete? Partially complete? What was done? It
also wastes time as the repo download comes first.

On Linux, the library may be in /usr/lib64 in many cases, so check for
the library in that path too.
2018-05-07 15:16:22 -07:00
Julien Blache 029373835c Cleanup CGO_*FLAGS
Use CGO_CPPFLAGS, remove non-ld options from CGO_LDFLAGS.
2018-05-04 19:15:48 -07:00
A.J. Beamon 6502d790b9 Remove extra call to create transaction. Cleanup created transactions. 2018-05-04 09:06:47 -07:00
A.J. Beamon d5f69ff596
Merge pull request #296 from apple/release-5.1
Merge Release 5.1 Into Release 5.2
2018-05-03 12:05:35 -07:00
John Brownlee 1739c82c1b Fixes the links to download the client libraries in our documentation and packages. 2018-05-01 16:10:51 -07:00
Alec Grieser 8c47e0a086
Merge pull request #278 from vmg/vmg/tuple
bindings/go: Reduce memory allocations when packing tuples
2018-05-01 15:46:20 -07:00
A.J. Beamon 060b655257
Add another line of description to synchronization comment. 2018-05-01 10:00:49 -07:00
A.J. Beamon a8c083509c Add a note about why the high-contention allocator synchronizes on HighContentionAllocator.class rather than Transaction. 2018-05-01 09:31:40 -07:00
Vicent Marti a19af9921e bindings/go: Reduce memory allocations when packing tuples
Memory profiling a FoundationDB layer implemented in Go shows high
memory pressure and increased GC times when performing highly-concurrent
multi-key transactions on the database. Further digging displays that
the source of the memory pressure happens when packing the keys for the
transaction into byte slices: the most salient issue is that memory
during the packing process is allocated based on the number of elements
to pack and not on the total size of the resulting byte slice.

This commit attempts to reduce the amount of memory allocated when
calling `Tuple.Pack` for most (all?) usage patterns, both in number of
allocations and in total allocated size.

The following optimizations have been implemented:

- Remove `bytes.Buffer` usage in `encodeTuple`: the `Buffer` struct is
quite expensive for the key sizes we're looking to generate, both
allocation and performance-wise. A `packer` struct has been implemented
that builds the keys "naively" by using `append` on a slice. Slice
growth in Go is also amortized just like in `bytes.Buffer`.

- Do not use `bytes.Replace` in `encodeBytes`: this function is
particularly expensive because it always allocates a copy of the byte
slice, even when it doesn't contain nil bytes. Instead, the replacement
step has been implemented manually in `packer.putbytesNil`, where it can
perform the replacement optimally into the output byte slice without
allocating memory. By having this local function we also allow the
compiler to not duplicate any input `string`s when casting them to
`[]byte`; previously, a copy of every string to pack was always being
allocated because the compiler couldn't prove that `bytes.Replace`
wouldn't modify the slice.

- Use stack space in `encode[Float|Double|Int]`: all the numerical
packing functions were allocating huge amounts of memory because of the
usage of temporary `bytes.Buffer` objects and `binary.Write` calls. The
sizes for all the packed data are always known (either 4 or 8 bytes
depending on type), so the big endian packing can be performed directly
on the stack with `binary.BigEndian.PutUint[32|64]`, which doesn't
require the `interface{}` conversion for the `binary.Write` API and in
x64 compiles to a `mov + bswap` instruction pair.

As a result of these optimizations, the "average" case of key packing
can now create a key with a single allocation.  More complex key packing
operations, even those that contain strings/byte slices with nil bytes,
now allocate memory in a constant way (i.e. amortized based on the
amount of growth of the output buffer and not the number of Tuple
elements to pack).

Additionally, the reduction of memory allocations and the better usage
of the `binary` APIs produce a very significant reduction in runtime for
key packing: between 2x and 6x faster for all packing operations.

Before/after benchmarks are as follows:

benchmark                                  old ns/op     new ns/op     delta
BenchmarkTuplePacking/Simple-4             310           76.4          -75.35%
BenchmarkTuplePacking/Namespaces-4         495           137           -72.32%
BenchmarkTuplePacking/ManyStrings-4        960           255           -73.44%
BenchmarkTuplePacking/ManyStringsNil-4     1090          392           -64.04%
BenchmarkTuplePacking/ManyBytes-4          1409          399           -71.68%
BenchmarkTuplePacking/ManyBytesNil-4       1364          533           -60.92%
BenchmarkTuplePacking/LargeBytes-4         319           107           -66.46%
BenchmarkTuplePacking/LargeBytesNil-4      638           306           -52.04%
BenchmarkTuplePacking/Integers-4           2764          455           -83.54%
BenchmarkTuplePacking/Floats-4             3478          482           -86.14%
BenchmarkTuplePacking/Doubles-4            3654          575           -84.26%
BenchmarkTuplePacking/UUIDs-4              366           211           -42.35%

benchmark                                  old allocs     new allocs     delta
BenchmarkTuplePacking/Simple-4             6              1              -83.33%
BenchmarkTuplePacking/Namespaces-4         11             1              -90.91%
BenchmarkTuplePacking/ManyStrings-4        18             2              -88.89%
BenchmarkTuplePacking/ManyStringsNil-4     18             2              -88.89%
BenchmarkTuplePacking/ManyBytes-4          23             3              -86.96%
BenchmarkTuplePacking/ManyBytesNil-4       22             2              -90.91%
BenchmarkTuplePacking/LargeBytes-4         3              2              -33.33%
BenchmarkTuplePacking/LargeBytesNil-4      3              2              -33.33%
BenchmarkTuplePacking/Integers-4           63             3              -95.24%
BenchmarkTuplePacking/Floats-4             62             2              -96.77%
BenchmarkTuplePacking/Doubles-4            63             3              -95.24%
BenchmarkTuplePacking/UUIDs-4              2              2              +0.00%

benchmark                                  old bytes     new bytes     delta
BenchmarkTuplePacking/Simple-4             272           64            -76.47%
BenchmarkTuplePacking/Namespaces-4         208           64            -69.23%
BenchmarkTuplePacking/ManyStrings-4        512           192           -62.50%
BenchmarkTuplePacking/ManyStringsNil-4     512           192           -62.50%
BenchmarkTuplePacking/ManyBytes-4          864           448           -48.15%
BenchmarkTuplePacking/ManyBytesNil-4       336           192           -42.86%
BenchmarkTuplePacking/LargeBytes-4         400           192           -52.00%
BenchmarkTuplePacking/LargeBytesNil-4      400           192           -52.00%
BenchmarkTuplePacking/Integers-4           3104          448           -85.57%
BenchmarkTuplePacking/Floats-4             2656          192           -92.77%
BenchmarkTuplePacking/Doubles-4            3104          448           -85.57%
BenchmarkTuplePacking/UUIDs-4              256           192           -25.00%
2018-05-01 10:52:08 +02:00
Vicent Marti 5bab1e8e4e bindings/go: Add tuple packing tests and benchmark
Although the Go bindings to FoundationDB are thoroughly tested as part
of the `bindingtester` operation, this commit implements a more-or-less
complete test case using golden files for the serialized output of
`Tuple.Pack` operations. This will make implementing optimizations and
refactoring the packing operation much simpler.

The same test cases used to verify correctness are also used as a
benchmark suite to measure the amount of memory allocated in the
different operations.
2018-05-01 10:51:57 +02:00
Iuri Sitinschi d52f8eb255 java binding: remove unnecessary collection wrapper 2018-04-30 10:05:53 -07:00
A.J. Beamon b359e57e78
Merge pull request #276 from isitinschi/master
java binding: remove unnecessary collection wrapper
2018-04-30 10:04:57 -07:00
Iuri Sitinschi 97360e77af java binding: remove unnecessary collection wrapper 2018-04-29 12:20:07 +02:00
Alec Grieser ed807a4f78
update generated.go to include first_in_batch 2018-04-28 17:50:49 -07:00
Alec Grieser 69e831d522
Merge remote-tracking branch 'upstream/release-5.2' into merge-release-5.2 2018-04-28 17:44:52 -07:00
Alec Grieser a1faaafca3
Merge remote-tracking branch 'upstream/release-5.1' into merge-release-5.1 2018-04-27 16:38:18 -07:00
Evan Tschannen 9fb31b3e47 updated generated.go 2018-04-27 16:33:57 -07:00
Evan Tschannen 434d896627 removed dev null is web scale from flow tester 2018-04-27 16:14:26 -07:00