Commit Graph

724 Commits

Author SHA1 Message Date
Andrew Noyes 9af6326e1b Make find_package work 2019-06-09 15:21:36 -07:00
Andrew Noyes 882523330c include(/path/to/cmake/file) now works for fdb_c 2019-06-09 15:21:36 -07:00
Andrew Noyes cabe41626c Prepare for exporting fdb_c 2019-06-09 15:21:36 -07:00
Andrew Noyes 2b07a0559e Install headers in foundationdb dir 2019-06-09 15:21:36 -07:00
Kao Makino 431513c654 Make mako sources a variable 2019-06-06 16:58:11 -07:00
Kao Makino db300f71c5 Build mako automatically 2019-06-06 14:53:26 -07:00
Evan Tschannen 5bdf5aaeb6
Merge pull request #1662 from etschannen/master
Merge 6.1 into master
2019-06-06 13:57:34 -07:00
Evan Tschannen cfa46ef48e fix compiler errors 2019-06-06 12:57:46 -07:00
Kao Makino c812224ddb Adjust mako.rst formatting 2019-06-05 17:26:40 -07:00
Kao Makino d2d5d52dca add mako.rst 2019-06-05 17:21:26 -07:00
Kao Makino 8a3facbb77 Add the error handling for commits 2019-06-05 13:19:53 -07:00
A.J. Beamon dbfa746494 Don't set the deterministic random seed with platform::getRandomSeed since that is what it does by default. 2019-06-05 11:48:29 -07:00
Kao Makino 1c7fa2bc7a Update build instruction 2019-06-04 17:38:05 -07:00
Kao Makino 42c14dcdc2 Fix build stuff 2019-06-04 17:35:47 -07:00
Evan Tschannen 29b96414e2 Merge branch 'release-6.1'
# Conflicts:
#	documentation/sphinx/source/release-notes.rst
#	fdbclient/NativeAPI.actor.cpp
#	fdbserver/Coordination.actor.cpp
#	flow/Arena.h
#	versions.target
2019-06-03 18:49:35 -07:00
A.J. Beamon b30fe29c9f
Merge pull request #1633 from pjvds/directory-errors
change common directory errors for easy comparison
2019-05-31 15:19:21 -07:00
Pieter Joost van de Sande b5773d2f6b
fix spelling error
Co-Authored-By: A.J. Beamon <ajbeamon@users.noreply.github.com>
2019-05-30 18:16:29 +02:00
Kao Makino ae0a5388c9 mako creation 2019-05-30 09:01:22 -07:00
Evan Tschannen 2166464c3b changed how printable was called to fix compile errors 2019-05-29 15:58:00 -07:00
Evan Tschannen 362c2bf1e6 improved the cpu efficiency of printable 2019-05-29 14:55:45 -07:00
Pieter Joost 19de1ae229 include errors in the dir layer documentation 2019-05-29 11:15:00 +02:00
A.J. Beamon 764ca2971c Merge branch 'master' into thread-safe-random-number-generation 2019-05-23 18:49:49 -07:00
A.J. Beamon 296adada93 Use c++11 thread_local instead of redefining it to platform specific variants. 2019-05-23 18:35:45 -07:00
A.J. Beamon 603721e125 Merge branch 'master' into thread-safe-random-number-generation
# Conflicts:
#	fdbclient/ManagementAPI.actor.cpp
#	fdbrpc/AsyncFileCached.actor.h
#	fdbrpc/genericactors.actor.cpp
#	fdbrpc/sim2.actor.cpp
#	fdbserver/DiskQueue.actor.cpp
#	fdbserver/workloads/BulkSetup.actor.h
#	flow/ActorCollection.actor.cpp
#	flow/Net2.actor.cpp
#	flow/Trace.cpp
#	flow/flow.cpp
2019-05-23 08:35:47 -07:00
Pieter Joost van de Sande 7debb23cf6 change common errors for easy comparison 2019-05-23 13:40:00 +02:00
A.J. Beamon 250955d18c Update required Go version in the Go binding's README.md 2019-05-22 08:54:42 -07:00
A.J. Beamon 2e09a214d9
Merge pull request #1451 from segmentio/master
bindings/go: use keepalive(f) on futures when they're used
2019-05-21 13:21:50 -07:00
Alec Grieser 76333ad87a
Resolves #1612: Go bindings: Use single line comments in CGO
This converts the multi-line comments for C imports to single line comments, which at the least is more idiomatic.
2019-05-20 13:49:22 -07:00
Alvin Moore 3acaa7343e Enabled C++17 for all Windows projects
Set Visual Studio version to 2017 (first version to support C++17)
2019-05-16 17:44:13 -07:00
Alvin Moore 94aed513c7 Switched Windows tools within projects to 2017 2019-05-16 15:05:11 -07:00
Alvin Moore bfee87bff6
Merge pull request #1567 from AlvinMooreSr/build-docker
Updated Build Docker
2019-05-15 15:01:22 -07:00
Alvin Moore 2ed1176d6a Add support for statically linking stdc++ to libfdbc_c on Centos while using custom hack for Ubuntu
Set compilationn flag to c++17
2019-05-15 02:37:16 -07:00
Alvin Moore b0362a654e Removed the debug compilation command display 2019-05-13 23:30:41 -07:00
Alvin Moore 7e4da69343 Added stdc++ library to link libraries 2019-05-13 23:25:00 -07:00
Alvin Moore 4d32909837 Moved standard libraries to LDFLAGS rather than LIBS 2019-05-10 15:22:41 -07:00
A.J. Beamon 5f55f3f613 Replace g_random and g_nondeterministic_random with functions deterministicRandom() and nondeterministicRandom() that return thread_local random number generators. Delete g_debug_random and trace_random. Allow only deterministicRandom() to be seeded, and require it to be seeded from each thread on which it is used. 2019-05-10 14:01:52 -07:00
Colin 9a85c19063
bindings/go: fix generated int64ToBytes calls 2019-05-10 15:20:59 -05:00
Colin Adler 93c1dced16
bindings/go: add labels for futures 2019-05-10 15:18:44 -05:00
Colin Adler 0d7748d59f
bindings/go: use binary.LittleEndian.PutUint64 instead of binary.Write
Benchmarks can be found in bindings/go/bench
2019-05-06 15:48:28 -05:00
Colin Adler 8033a0e717
bindings/go: format lines over 120 characters long 2019-05-06 15:37:58 -05:00
Austin Seipp ca83a80168 bindings/c: fix some print/scan format warnings
Signed-off-by: Austin Seipp <aseipp@pobox.com>
2019-05-06 13:35:29 -07:00
Austin Seipp aab32eb855 bindings/flow: fix some print/scan format warnings
Signed-off-by: Austin Seipp <aseipp@pobox.com>
2019-05-06 13:35:29 -07:00
Alvin Moore 648fc8ec7c
Merge pull request #1472 from mpilman/fixes/no-libfdbc-in-jar
Remove fdb_c from fat-jar
2019-05-01 14:23:56 -07:00
Evan Tschannen 2d5043c665 Merge branch 'release-6.1'
# Conflicts:
#	documentation/sphinx/source/release-notes.rst
#	versions.target
2019-04-30 18:27:04 -07:00
Alvin Moore 8badc2e505 Merge pull request #1338 from mpilman/features/stripped-binaries
Strip debug symbols with `make packages`
2019-04-25 12:02:10 -07:00
Trevor Clinkenbeard 9fea60675f Fix comments to use transaction_too_old instead of past_version 2019-04-24 18:50:57 -07:00
Alvin Moore 5479baa493 Modified syntax to support python 2.6 2019-04-24 13:14:53 -07:00
mpilman abb68cba92 Remove fdb_c from fat-jar
Fixes #1460
2019-04-18 13:26:27 -07:00
Andrew Noyes 6207d724f8 Fix all -Wunused-variable warnings 2019-04-15 18:13:00 -07:00
Evan Tschannen cd5c9d91fa
Merge pull request #1443 from etschannen/master
Merge 6.1 into master
2019-04-10 17:43:07 -07:00
Evan Tschannen 21c0ba555c Merge branch 'release-6.1'
# Conflicts:
#	documentation/sphinx/source/release-notes.rst
#	versions.target
2019-04-08 18:38:42 -07:00
A.J. Beamon 35cf87007c Update bindings/c/fdb_c.cpp 2019-04-08 14:49:10 -07:00
A.J. Beamon a7288e1325 Throw process_behind instead of future_version when all storage nodes on a team are behind. process_behind gets the same backoff behavior as not_committed. Add proxy_memory_limit_exceeded to the retryable predicate. 2019-04-08 14:21:24 -07:00
Markus Pilman 101a05ae77
Merge branch 'master' into features/client-simulator 2019-04-03 10:03:56 -08:00
Amir Abu Shareb d6a4a0a0bb bindings/go: keep futures alive on use 2019-04-03 18:47:18 +03:00
Evan Tschannen 39c595223b Merge branch 'release-6.1' 2019-04-02 22:30:02 -07:00
Evan Tschannen e5606589bb
Merge pull request #1405 from etschannen/release-6.1
Update documentation and protocol version for release 6.1.0
2019-04-02 18:40:16 -07:00
Evan Tschannen 985e1de467 Update documentation and protocol version for release 6.1.0 2019-04-02 18:39:24 -07:00
mpilman 160949d071 Remove unnecessary function 2019-04-02 16:28:34 -07:00
mpilman d38efac7f8 minor code cleanup 2019-04-02 16:23:36 -07:00
Alvin Moore b3450af8a7
Merge pull request #1338 from mpilman/features/stripped-binaries
Strip debug symbols with `make packages`
2019-04-02 15:03:37 -07:00
Chris Donati 156962e5bf Fix Versionstamp encoding issue for Value objects
Python's struct.pack does not accept Value objects.
2019-04-02 13:49:58 -07:00
mpilman 371a41dbba Allow classPath to be modified at runtime 2019-04-02 11:56:40 -07:00
Amir Abu Shareb 1a0bee4937 bindings/go: move release_memory() calls (#1400) 2019-04-02 20:58:49 +03:00
mpilman 6facfa931b fixed weird encoding issue 2019-04-02 10:32:09 -07:00
Chris Donati 2d4d219ef2 Improve Python KeySelector representation
Python 2 resolves escape characters when printing byte strings,
which doesn't seem useful in this context.

I replaced __str__ since it defaults to __repr__ and the change
should be suitable for both cases.
2019-04-01 09:18:01 -07:00
mpilman e23e63c6ac Implemented JavaWorkload
This change allows a user to write a workload in Java.

The way this is implemented is by creating a JVM within the
simulator and calling the corresponding workload class. A
workload can then run in the simulator or on a testing cluster.

If the workload is executed within the simulator, the resulting
test will not be deterministic anymore as it will execute in a
different thread (and even without that it is not clear, whether
we could get determinism as the JVM does a lot of stuff that are
not deterministic).

This is intendet to get better testing of the Java client and
layer authors can use the simulator to test their layers on a single
machine but they can still simulate failing machines etc.
2019-03-31 17:57:43 -07:00
Chris Donati f1331dbac6 Improve Python KeySelector representation
Python 2 resolves escape characters when printing byte strings,
which doesn't seem useful in this context.

I replaced __str__ since it defaults to __repr__ and the change
should be suitable for both cases.
2019-03-31 11:54:36 -07:00
A.J. Beamon f363bdb007 Update documentation about batch priority transactions 2019-03-26 15:45:38 -07:00
Alec Grieser 63f23c0818
add tests for new database behavior to python scripted tests
This also fixes the behavior for the tests of the options which are no longer reset when on_error is called.
2019-03-22 15:10:08 -04:00
Alec Grieser e6e2ea2af6
Merge remote-tracking branch 'upstream/master' into 00775-database-level-tr-options 2019-03-22 14:41:27 -04:00
Alec Grieser 5e8e2ef2a6
rename the function where it is defined as well as where it is called 2019-03-22 13:26:41 -04:00
Alec Grieser 9e15872418
remove test that is now extraneous 2019-03-22 13:20:00 -04:00
Alec Grieser 1342cc7f48
update generated.go after vexillographer change (docs only) 2019-03-22 13:12:10 -04:00
A.J. Beamon 001fde718c
fix comments to mark things that throw as throwing rather than not throwing
Co-Authored-By: alecgrieser <alloc@apple.com>
2019-03-22 13:04:11 -04:00
Alec Grieser 4ac3e790ad
modify the reset and timeout option unit tests to handle new on_error cancellation behavior 2019-03-22 12:45:59 -04:00
Alec Grieser 64e45e6826
retry limit and max delay transaction options are no longer reset after onError 2019-03-21 18:50:02 -04:00
Alec Grieser 22f592ce6e
reset the timeout only if the API version is less than 610 to allow transactions with longer timeouts than the database default 2019-03-21 16:47:12 -04:00
Evan Tschannen 5b8229160c
Merge pull request #1317 from alecgrieser/01186-java-malformed-utf16
Fixes #1186: Tuples: Malformed UTF-16 treated differently in Java and Python
2019-03-21 10:24:44 -07:00
mpilman 48f3e65bdf Strip debug symbols with `make packages`
When compiling on Linux/MacOS `make packages` will now create
a `lib` and a `bin` directory in the packages directory. In there
it will put stripped versions of all executables and shared
libraries (i.e. the binaries without debug symbols).

If this is run on Linux, it will additionally copy the debug symbols
of all executables into .debug files.
2019-03-20 20:27:10 -07:00
Alec Grieser 4fff1f6756
add database options to bindingtester stack tester 2019-03-20 11:13:38 -06:00
Alec Grieser 5f73b7d6ae
Resolves #775: Support setting Transaction options at the Database level
This selects a few useful transaction options that users may want to set for every transaction and adds them to the database options.
2019-03-20 11:13:38 -06:00
Andrew Noyes fdde63bbdb Remove EXPORT since it's broken and unnecessary 2019-03-19 16:28:42 -07:00
Alec Grieser 253597466c
revert temporary testing changes 2019-03-18 13:00:59 -07:00
Alec Grieser ff4386f4e4
TuplePerformanceTester no longer generates malformed UTF-16 2019-03-18 09:43:31 -07:00
Alec Grieser 715c2c980d
Fixes #1186: Tuples: Malformed UTF-16 treated differently in Java and Python
Technically, they are still treated differently in Java and Python, but now, Java throws an exception if it encounters malformed UTF-16 to avoid serializing things in ways that it cannot deserialize. It also now throws an error when reading malformed UTF-8, which I think is safer as it stops it from accidentally doing something like reading bytes and then writing it back but accidentally writing to the wrong spot, but that might be a mistake.
2019-03-18 09:19:54 -07:00
ravilution 6161144788
Fixing the Tutorials Link
Fixing the Tutorials link to point to GO version of the tutorials
2019-03-17 12:21:03 -05:00
A.J. Beamon 98f8fa62e9 Update generated.go 2019-03-14 15:05:36 -07:00
Xin Dong 636d2ca631
Merge pull request #1207 from alecgrieser/tuple-performance-cache-packed
Java: Tuple serialization/deserialization uses fewer allocations
2019-03-13 15:53:52 -07:00
Jingyu Zhou 1f39da06de
Merge pull request #1268 from jzhou77/cmake_fix
Create tar.gz file for python package
2019-03-11 22:48:16 -07:00
Alec Grieser d9e9e0c521
use bitwise or instead of addition when reconsituting long 2019-03-11 18:26:08 -07:00
Balachandar Namasivayam 36c12cd749 Add missing definitions. 2019-03-11 17:49:03 -07:00
Balachandar Namasivayam 880e8643d1 Fix Windows link errors 2019-03-11 17:49:03 -07:00
Alec Grieser 7340298202
remove debugging printing that was accidentally added 2019-03-11 16:57:36 -07:00
Alec Grieser f66ddb13c2
rewrite replace without a buffer to use replace with a buffer to first get length 2019-03-11 16:57:36 -07:00
Alec Grieser 75e475563a
clarify comments and be more strict about using UUID_BYTES constant 2019-03-11 16:57:36 -07:00
Alec Grieser 40aa2ba6f0
CMakeLists alphabetization and Javadoc improvements 2019-03-11 16:57:36 -07:00
Alec Grieser 39fd30330f
memoize incomplete versionstamp information in Tuples ; add more tests 2019-03-11 16:55:01 -07:00
Alec Grieser 663d750e1d
pack Tuples with a single byte array allocation of the right size 2019-03-11 16:55:01 -07:00
Alec Grieser a74dfa5487
compare strings by unicode codepoint without copying 2019-03-11 16:55:01 -07:00
Alec Grieser e9771364d7
various Java tuple performance tweaks
These include:

* Memoizing packed representations within Tuples
* Using longs instead of BigIntegers if possible
* As much as possible sticking to manipulating primitive types when using floats/doubles
2019-03-11 16:55:00 -07:00
Alec Grieser e6ce0ebd27
improve tuple performance tester for more types and add serialization check in TupleTest 2019-03-11 16:55:00 -07:00
Alec Grieser 78ff3d92c1
memoize the packed Tuple representation 2019-03-11 16:55:00 -07:00
A.J. Beamon 083a73b0d2 In our binding testers, stop using the TRANSACTION_LOGGING_ENABLE option and switch to the DEBUG_TRANSACTION_IDENTIFIER and LOG_TRANSACTION options 2019-03-11 13:35:43 -07:00
Alec Grieser 1ac8ecf55e
Merge pull request #1187 from ryanworl/bindings/go-tuple-layer-versionstamps
Add Versionstamp support to the Go Tuple layer
2019-03-11 12:36:47 -07:00
Jingyu Zhou 314e87edfb Create tar.gz file for python package
On Windows, the default package format can be zip, while tar.gz is expected.
2019-03-11 11:10:40 -07:00
A.J. Beamon 4941d6dc3c
Merge pull request #1212 from alecgrieser/00719-read-transaction-set-read-version
Java: Move a few methods relevant to read-only transactions to `ReadTransaction`
2019-03-11 09:49:57 -07:00
Ryan Worl 92167fd03f handle incomplete versionstamp attempting to be packed into vanilla tuple 2019-03-09 11:11:22 -05:00
Ryan Worl 8066556753 address review comments and bugs after running binding tester compared to python bindings 2019-03-09 10:48:22 -05:00
mpilman 2537f26de6 First implementaion of more user-friendly cpack
Up unto here this code is only very rudiemantery tested.

This is a firest attempt of making cpack more user-friendly.
The basic idea is to generate a component for package type so
that we can have different paths depending on whether we build
an RPM, a DEB, a TGZ, or a MacOS installer. The cpack package
config file will then chose the correct components to use.

In a later point this should make it possible to build these
with `make packages` and the ugly iteration with calling cmake
between each package would be obsolete. While this solution is
a bit more bloated, it is also much more flexible and it will be
much easier to use.

Another benefit is, that this will get rid of all warnings during
a cpack run
2019-03-07 16:49:29 -08:00
Alec Grieser 83e4b966d5 Resolves #1235: Java: FDBExceptions are created successful operation completion (#1236)
The native function `NativeFuture::Future_getError` now returns `null` when the error code is 0 instead of an `FDBException` with a "Success" message and an error code of 0. This was only used in two places within the codebase; those two places now check for `null` errors and treats them like successes.
2019-03-06 18:34:36 -08:00
Ryan Worl 77f7c0721f revent this again because my environment is dumb 2019-03-06 18:27:43 -05:00
Ryan Worl 2fbc7522e4 review feedback: fix bindingtester test, add comments to versionstamp and other structures, handle nested tuples, handle prefix []byte in PackWithVersionstamp 2019-03-06 18:25:02 -05:00
Alex Miller c6a65389ae Remove noexcept macro and replace with BOOST_NOEXCEPT.
BOOST_NOEXCEPT does what the noexcept macro was supposed to do, but in a
way that is correctly maintained over time.
2019-03-05 22:06:12 -08:00
Alex Miller af617d68e6 boost 1.52.0 -> 1.67.0 in all vcxproj files 2019-03-05 22:06:12 -08:00
Bhaskar Muppana 89e5be7d70
Resolves #1027: Adding interfaces to Flow bindings (#1215)
* Resolves #1027: Adding interfaces Database, ReadTransaction and Transaction.

* Moving implementations into DatabaseImpl and TransactionImpl.
* Also removed deprecated class Cluster.

As we changed the interfaces, especially how we create transaction, its
going to break the compilation of any app upgrades to this version of
flow bindings. It doesn't change any of the fdb_c APIs. So, backward
compatilbity with old servers is preserved through multi-version client.

* Fixing indentation

* Fixing format according to review comments.
2019-03-05 13:09:26 -08:00
Alec Grieser eb8a085cf9
conditional add read conflict methods now return whether they added the conflict range ; test added for snapshot transactions 2019-03-02 09:48:53 -08:00
Alec Grieser 7ef189701e
Resolves #719: Support `.setReadVersion()` on `ReadTransaction` 2019-03-02 09:48:49 -08:00
Alec Grieser c8b9c998e9
Merge pull request #1216 from ajbeamon/fix-python-singlefloat-with-int
Python: creating a SingleFloat with an integer didn't work.
2019-03-01 14:08:04 -08:00
A.J. Beamon 8669aea22b Python: creating a SingleFloat with an integer didn't work. Updated the tester to exercise this path. 2019-03-01 09:25:53 -08:00
mpilman d08aad7fc4 Old build system now working on both docker images 2019-02-28 14:24:52 -08:00
mpilman d0c06ec8c0 Make old build system work on build/cmake/Dockerfile 2019-02-28 14:24:52 -08:00
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