7b5d37a039
Fix: Make sure we release the Write-Lock
...
This was suggested by Marcel Müller, who also debugged this issue and
found that this snippet was the error.
The problem was, that we had the write-lock when starting the hooks. If
the hook runs into an Err() mapping part where the Entry could already
be drop()ed, Rust tries to be smart and drops the object. As we are
still in the creation code of the entry, this paniced as we still hold
the W-Lock and the drop() tryies to call _update() on the entry, which
also tries to W-lock it.
With the new additional scope, the W-lock gets dropped early and we do
not have this problem anymore.
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Suggested-by: Marcel Müller <neikos@neikos.email>
Reported-by: Matthias Beyer <mail@beyermatthias.de>
2016-08-01 20:00:31 +02:00
Kai Sickeler
b6437a0b0f
Implement Debug for FileLockEntry, do not derive it
2016-07-27 19:26:45 +02:00
0ba67f7873
Check whether implictely creating the store path is allowed
2016-07-25 17:02:38 +02:00
6b1fdfbc1d
Add Store::verify()
2016-07-17 00:59:04 +02:00
76d23577c4
Merge pull request #546 from matthiasbeyer/libimagstore/fixed-and-more-hook-error-wrapping
...
Add more error levels in hook execution error wrapping
2016-07-16 11:23:38 +02:00
8de32622b9
Add more error levels in hook execution error wrapping
2016-07-16 00:57:33 +02:00
32617d0a16
Add debug config when getting configuration for a hook
2016-07-16 00:32:58 +02:00
33771f3903
Add debugging output when setting hook configuration
2016-07-16 00:32:54 +02:00
fc72b3f53a
Add more debug output in Store::new()
2016-07-16 00:32:50 +02:00
John Sirois
7f57e5e234
Move from a helper function to a typeclass.
...
This introduces the `FoldResut` trait to move from `func(receiver, ...)`
style to `receiver.func(...)` style. Also add a means to pass the
default result explicitly.
2016-07-14 07:28:54 -06:00
John Sirois
2c40b8734e
Add a fold_ok
utility.
...
Add a utility that folds an iterator into a result and uses it to reduce
boilerplate in the codebase.
2016-07-13 12:43:04 -06:00
eb31da70d1
Remove import: trace_error() function
2016-07-07 17:03:20 +02:00
d18766b4b4
Remove checking for aborting errors
...
As the Aspect execution catches the aborting hooks and returns them, we
cannot have a non-aborting error here, so there is no point in checking
for aborting errors.
2016-07-06 18:01:00 +02:00
a706680fd5
Revert "Store::create() Make outgoing storeid object unstorified"
...
This reverts commit 41d7d1c213
.
2016-07-04 12:46:06 +02:00
41d7d1c213
Store::create() Make outgoing storeid object unstorified
2016-07-04 12:44:58 +02:00
12b8f8f331
Move storification of StoreId object to new StoreId::storified() func
2016-07-02 17:52:12 +02:00
45a24de853
store.rs: Replace error boxing and wrapping with result helper from libimagerror
2016-06-27 18:16:43 +02:00
55e6c29275
Add another level of error enclosure
2016-06-08 15:11:53 +02:00
84a0778a5b
Refactor: Use helper function for equal codelines
2016-06-08 15:08:06 +02:00
3c40df1ae7
Add Store::save_to() to create a copy of an entry
2016-06-08 15:08:06 +02:00
2ce84a3dbf
Add {Pre, Post}Move hooks
2016-06-08 15:08:00 +02:00
12cac663d0
Implement save_as()
2016-06-08 14:03:17 +02:00
f885e6c80b
Implement move_by_id()
2016-06-08 14:03:17 +02:00
5b16771f4f
Add (unimplemented) functions for moving store entries
2016-06-08 14:02:52 +02:00
88e89d7927
Merge pull request #456 from matthiasbeyer/libimagstore/errors-to-identify-store-api-call
...
Add a set of error kinds to identify the store call the error came from
2016-06-06 18:28:48 +02:00
ea5319812d
Merge pull request #439 from matthiasbeyer/libimagstore/fle-and-entry-have-storeid
...
Remove duplicated StoreId member in FileLockEntry, use member from Entry
2016-05-29 02:15:26 +02:00
9d37ffef91
Merge pull request #454 from matthiasbeyer/libimagstore/hook-exec-error-fix
...
Libimagstore/hook exec error fix
2016-05-29 01:31:17 +02:00
55e5255293
Remove duplicated StoreId member in FileLockEntry, use member from Entry
2016-05-29 00:01:05 +02:00
ce12a22ef5
Merge pull request #440 from matthiasbeyer/libimagstore/load-unload-hooks
...
Libimagstore/load unload hooks
2016-05-28 23:59:32 +02:00
64e28f3c31
Fix C/P fail
...
The store executed the wrong hooks here, because of a C/P failure.
This fixes this bug.
2016-05-28 23:47:26 +02:00
d85f747066
Add a set of error kinds to identify the store call the error came from
2016-05-28 23:30:50 +02:00
6c7d6c29ea
Rewrite pre-hook execution
2016-05-28 21:08:55 +02:00
42289a085e
Fix glob() pattern
2016-05-28 17:28:38 +02:00
a6200b67c0
Merge pull request #446 from matthiasbeyer/libimagstore/fix-get
...
Fix Store::get()
2016-05-28 10:35:42 +02:00
19aec6327f
Fix Store::get()
2016-05-27 23:58:37 +02:00
183c46a7dd
Use Into implementations to convert error kinds into error types
2016-05-27 10:11:51 +02:00
2ad5cb48aa
Implement store-unload hooks
2016-05-26 21:04:04 +02:00
dd7e146081
impl Into<StoreIdIterator> for GlobStoreIdIterator to be able to convert easily
2016-05-23 14:52:32 +02:00
839ec051a4
Add Store::get_all_versions() for getting all versions of a StoreId entry
2016-05-23 14:52:13 +02:00
b4f17576f6
Add Store::get() for getting or failing if entry does not exist
2016-05-23 14:51:38 +02:00
a56f000e3e
Remove unneeded scope
2016-05-15 14:02:30 +02:00
a26a0645bd
Remove iflet by mapping
2016-05-15 14:01:55 +02:00
944a9bf876
Remove unwrap() calls by matching
2016-05-15 14:01:55 +02:00
0b7f815104
Remove unwrap() calls by matching
2016-05-15 14:01:55 +02:00
81810dbcc8
Remove unwrap() calls by matching
2016-05-15 14:01:55 +02:00
604e59ae3c
Remove unwrap() calls by matching
2016-05-15 14:01:55 +02:00
2a6e4c62fe
Remove unwrap() by matching, remove unneeded deref()
2016-05-15 14:01:55 +02:00
8d9bd5154d
Remove unwrap() by matching, remove unneeded deref()
2016-05-15 14:01:55 +02:00
a481200c9a
Replace unwrap() by matching
2016-05-15 14:01:55 +02:00
1e1cbec98b
Replace unwrap() by matching
2016-05-15 14:01:55 +02:00