Age | Commit message (Collapse) | Author |
|
The Dets server pretends the file is open before internal_open()
has been called, which means that unless the internal_open
message is applied first, other processes can find the pid by
calling dets_server:get_pid() and do things before Head has been
initialized properly.
|
|
See also ERL-55.
|
|
|
|
The correction is due to the the evil testcase
dets_SUITE:simultaneous_open(). If the process repairing a Dets file
is killed (should normally never happen), and another process tries to
repair the file, a temporary file from the first process could live on
for a while, even after a successful call to file:delete(). This has
only been seen on W-nd-ows, where it is a known problem.
There are other ways to deal with the problem (rename the file; use
some other filename), but we continue using one certain filename in
order to be as backwards compatible as possible.
|
|
Thanks to Alexei Sholik for reporting the bug.
|
|
Stabilize tests for all kind of machines
Old sparc (and newer smaller) machines timeouts in 'random_ref_comp'
decrease load and increase timeouts.
Supervisor:
Turn up accepted time, since if non-linear it should be much worse,
now the test failes on slow multicore machines
Remove memory tests, they fail sometimes and those tests are not
needed to be tested. Hard to predict GC's and other processes behaviours.
|
|
Instead of deleting the small file when opening it with
dets:open_file/2 an error message is returned, mimicking the behaviour
when the file is bigger.
open_file/1 has been modified to return the same error message when
the file is small as when the file is bigger.
Thanks to Hakan Mattson for reporting this bug.
|
|
Thanks to Hakan Mattson for reporting this bug.
|
|
The bug was introduced in R16B.
Thanks to Manuel Durán Aguete.
|
|
|
|
|
|
The test case deletes a Dets process while it is repairing a file.
Another client waiting for the Dets process to reply then kicks in and
repairs the file. Apparently the temporary file was still open,
resulting in an eacces error on Windows.
|
|
Dets tables are no longer fixed while traversing with a bound key
(when only the objects with the right key are matched). This
optimization affects the functions match/2, match_object/2, select/2,
match_delete/2, and select_delete/2.
|
|
|
|
|
|
A Dets table with sufficiently large buckets could not always be repaired.
(Reported by Gordon Guthrie.)
The format of Dets files has been modified. When downgrading tables
created with the new system will be repaired. Otherwise the
modification should not be noticeable.
|
|
If a Dets table had been properly closed but the space management data
could not been read, it was not possible to repair the file.
|
|
* dev:
Fix a couple of minor bugs with hook priority
Update to reflect addition of CTH priority addition
Update CTH priority default to be 0
Update to reflect new cth callback api
Update the return from init/2 to be {ok, NewState} or {ok,NewState,Priority} instead of NewState.
Add priority functionality and tests for ct hooks
Update internal hooks state to use a record instead of tuples
Improve and correct types and specifications in Kernel and STDLIB
|
|
Running Dialyzer on the test suites revealed a few type errors.
|
|
This commit is a preparation for introducing location information
(filename/line number) in stacktraces in exceptions. Currently
a stack trace looks like:
[{Mod1,Function1,Arity1},
.
.
.
{ModN,FunctionN,ArityN}]
Add a forth element to each tuple that can be used indication
the filename and line number of the source file:
[{Mod1,Function1,Arity1,Location1},
.
.
.
{ModN,FunctionN,ArityN,LocationN}]
In this commit, the fourth element will just be an empty list,
and we will change all code that look at or manipulate stacktraces.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
If a Dets table with fewer slots than keys was opened and then closed
after just a lookup, the contents were no longer well-formed. This bug
has been fixed. (Thanks to Matthew Evans.)
|
|
* hb/stdlib/dets_chunk_match/OTP-8903:
Fix a bug concerning bchunk(), match() and select()
Conflicts:
lib/stdlib/test/dets_SUITE.erl
|
|
If a Dets table was closed after calling bchunk/2, match/1,3,
match_object/1,3, or select/1,3 and then opened again, a subsequent
call using the returned continuation would normally return a reply.
This bug has fixed; now the call fails with reason 'badarg'.
|
|
* hb/stdlib/dets_stream_op/OTP-8899:
Fix a bug that could cause 'bad_object' errors
Conflicts:
lib/stdlib/test/dets_SUITE.erl
|
|
When several clients accessed a Dets table simultaneously,
modifications of the Dets server's internal state were sometimes
thrown away. The symptoms are diverse: error with reason 'bad_object';
inserted objects not returned by lookup(); et cetera.
|
|
* hb/stdlib/dets_fixed_dirty/OTP-8898:
Fix a bug concerning truncated Dets files
Conflicts:
lib/stdlib/src/dets.erl
lib/stdlib/test/dets_SUITE.erl
|
|
When several clients accessed a Dets table simultaneously, inserted or
updated objects were sometimes lost due to the Dets file being
truncated.
|
|
When several clients accessed a Dets table simultaneously, one of them
calling dets:insert_new/2, the Dets server could crash. Alternatively,
under the same conditions, 'ok' was sometimes returned instead of 'true'.
|
|
|