- 06 Dec, 2016 1 commit
-
-
Boris Barbulovski committed
-
- 20 Nov, 2016 1 commit
-
-
Boris Barbulovski committed
-
- 18 Nov, 2016 6 commits
-
-
Introduce some clar helpers for child threads
Carlos Martín Nieto committed -
Edward Thomson committed
-
Edward Thomson committed
-
Don't `cl_git_pass` in a child thread. When the assertion fails, clar will `longjmp` to its error handler, but: > The effect of a call to longjmp() where initialization of the jmp_buf > structure was not performed in the calling thread is undefined. Instead, set up an error context that threads can populate, and the caller can check.
Edward Thomson committed -
We want a predictable number of initializations in our multithreaded init test, but we also want to make sure that we have _actually_ initialized `git_libgit2_init` before calling `git_thread_create` (since it now has a sanity check that `git_libgit2_init` has been called). Since `git_thread_create` is internal-only, keep this sanity check. Flip the invocation so that we `git_libgit2_init` before our thread tests and `git_libgit2_shutdown` again after.
Edward Thomson committed -
Introduce `git_thread_exit`, which will allow threads to terminate at an arbitrary time, returning a `void *`. On Windows, this means that we need to store the current `git_thread` in TLS, so that we can set its `return` value when terminating. We cannot simply use `ExitThread`, since Win32 returns `DWORD`s from threads; we return `void *`.
Edward Thomson committed
-
- 17 Nov, 2016 1 commit
-
-
use `giterr_set_str()` wherever possible
Carlos Martín Nieto committed
-
- 16 Nov, 2016 1 commit
-
-
`giterr_set()` is used when it is required to format a string, and since we don't really require it for this case, it is better to stick to `giterr_set_str()`. This also suppresses a warning(-Wformat-security) raised by the compiler. Signed-off-by: Pranit Bauva <pranit.bauva@gmail.com>
Pranit Bauva committed
-
- 15 Nov, 2016 9 commits
-
-
Bump version number to v0.25
Carlos Martín Nieto committed -
sortedcache: plug leaked file descriptor
Carlos Martín Nieto committed -
Patrick Steinhardt committed
-
Patrick Steinhardt committed
-
curl_stream: use CURLINFO_ACTIVESOCKET if curl is recent enough
Carlos Martín Nieto committed -
Carlos Martín Nieto committed
-
Introduce a GitHub Issue Template
Carlos Martín Nieto committed -
CHANGELOG: fill in some updates we missed
Carlos Martín Nieto committed -
The `CURLINFO_LASTSOCKET` information has been deprecated since curl version 7.45.0 as it may result in an overflow in the returned socket on certain systems, most importantly on 64 bit Windows. Instead, a new call `CURLINFO_ACTIVESOCKET` has been added which instead returns a `curl_socket_t`, which is always sufficiently long to store a socket. As we need to provide backwards compatibility with curl versions smaller than 7.45.0, alias CURLINFO_ACTIVESOCKET to CURLINFO_LASTSOCKET on platforms without CURLINFO_ACTIVESOCKET.
Patrick Steinhardt committed
-
- 14 Nov, 2016 21 commits
-
-
Plug a leak in the refs compressor
Edward Thomson committed -
Edward Thomson committed
-
Carlos Martín Nieto committed
-
Carlos Martín Nieto committed
-
Repository discovery starting from files
Carlos Martín Nieto committed -
Use the sorted input in the tree updater
Edward Thomson committed -
Concurrency fixes for the reference db
Edward Thomson committed -
We look at whether we're trying to replace a blob with a tree during the update phase, but we fail to look at whether we've just inserted a blob where we're now trying to insert a tree. Update the check to look at both places. The test for this was previously succeeding due to the bu where we did not look at the sorted output.
Carlos Martín Nieto committed -
The loop is made with the assumption that the inputs are sorted and not using it leads to bad outputs.
Carlos Martín Nieto committed -
We do not currently use the sorted version of this input in the function, which means we produce bad results.
Carlos Martín Nieto committed -
Carlos Martín Nieto committed
-
On Windows we can find locked files even when reading a reference or the packed-refs file. Bubble up the error in this case as well to allow callers on Windows to retry more intelligently.
Carlos Martín Nieto committed -
At times we may try to delete a reference which a different thread has already taken care of.
Carlos Martín Nieto committed -
It does not help us to check whether the file exists before trying to unlink it since it might be gone by the time unlink is called. Instead try to remove it and handle the resulting error if it did not exist.
Carlos Martín Nieto committed -
Checking the size before we open the file descriptor can lead to the file being replaced from under us when renames aren't quite atomic, so we can end up reading too little of the file, leading to us thinking the file is corrupted.
Carlos Martín Nieto committed -
The logic simply consists of retrying for as long as the library says the data is locked, but it eventually gets through.
Carlos Martín Nieto committed -
This allows the caller to know the errors was e.g. due to the packed-refs file being already locked and they can try again later.
Carlos Martín Nieto committed -
We can reduce the duplication by cleaning up at the beginning of the loop, since it's something we want to do every time we continue.
Carlos Martín Nieto committed -
There might be a few threads or processes working with references concurrently, so fortify the code to ignore errors which come from concurrent access which do not stop us from continuing the work. This includes ignoring an unlinking error. Either someone else removed it or we leave the file around. In the former case the job is done, and in the latter case, the ref is still in a valid state.
Carlos Martín Nieto committed -
We need to save the errno, lest we clobber it in the giterr_set() call. Also add code for reporting that a path component is missing, which is a distinct failure mode.
Carlos Martín Nieto committed -
In order not to undo concurrent modifications to references, we must make sure that we only delete a loose reference if it still has the same value as when we packed it. This means we need to lock it and then compare the value with the one we put in the packed file.
Carlos Martín Nieto committed
-