Age | Commit message (Collapse) | Author |
|
This patch adds a mechanism by which shell history gets stored
persistently on disk and gets loaded whenever a new shell session
begins.
The log files are added to the user's cache directory, with multiple
files in it, although the location is configurable.
All Erlang instances on a given host will share the same log file.
There are two hook points in group.erl that are used: when instantiating
the buffer, where we fetch from disk, and when adding a line to the
buffer (gets stored).
This allows all shell instances to use the same base set of lines when
loaded, but to keep their history separate after the fact. As lines are
added as you go, a new shell session (with ^G -> s -> c) will have
access to previous sessions' lines.
The implementation makes use of the disk_log library with a rotating log
in order to store data, and allow automated repairs.
By default, the feature is disabled and must be turned on through OTP
environment variable part of the kernel application. The options
include:
| Option | Accepted values | Default | Description |
| ------------------------ | ----------------- |---------- | -------------------- |
| shell_history | enabled, disabled | disabled | turn feature on/off |
| shell_history_path | any string | user cache| where to put files |
| shell_history_file_bytes | 51200..N bytes | 512kb | max data size (>50kb)|
| shell_history_drop | ["q().", ...] | [] | blacklisted lines |
A version header is added to the disk_log configuration, allowing
changes in the storage format to be enacted in the future (i.e. adding
segmentation by node name in the same file, or encoding) without
conflict.
Log rotation is used with multiple log files to ensure proper
enforcement of resizing without too much data loss. Because disk_log
does not allow to just flush bits of content on rewrite (it truncates
any full file), we instead use a wrap log and try to divide the
configured size into up to 10 log files so that every time we rotate a
log, we lose only 10% of the data. This remains true for corrupted files
that cannot fully be repaired.
This many-logs-based approach in turn forces the use of a minimal log
size for the `shell_history_file_bytes` configuration, since it has to
be divided by 10.
The shell history is not loaded for the `user` process which, despite
running the group.erl module, does not actually require history as it
mostly just forwards IO protocol information.
|
|
This option allows to suppress output of info_msgs to error_logger when
recoverable errors are encountered in disk_log by setting the value to
'true'.
Defaults to 'false', the backwards compatible behaviour.
|
|
A specific type was given as an atom rather than an actual type
defintion.
|
|
'modeules' -> 'modules'
Introduced in 3edc6dbf8f150bb6ba7c800ed5cc379771f8b279 (present in 20.0-rc1, but
not in the 19 release series).
|
|
This reverts commit dc57404252c47520f352834ad9be45ad684f96c9.
|
|
|
|
|
|
|
|
* zandra/kernel/nodenames/OTP-13805:
kernel: Do not allow unicode in nodenames
|
|
Verify that unicode isn't used in a node name and logi an info
message if it is. Filter the head part of the name a bit harder
to work with epmd.
|
|
|
|
bind to device is needed to properly support VRF-Lite under
Linux (see [1] for details).
[1]: https://www.kernel.org/doc/Documentation/networking/vrf.txt
|
|
* lukas/erts/20_minor_fixes:
erts: Rebuild etc executables if config.h changes
erts: Fix new gcc warning in check io
kernel: Add mem check to prim_file:large_write tc
erts: Fix two compiler warnings on OS X
erts: Fix erts_debug:df function info output
erts: Get rid of some unused function warnings on os x
|
|
|
|
* sverker/remove-latin1-atom-encoding:
kernel: Fix erl_distribution_wb_SUITE:whitebox
kernel: Remove pg2_SUITE:compat
erts: Remove fun_r13_SUITE
stdlib: Remove test cases for R12 io protocol
kernel: Make DFLAG_UTF8_ATOMS mandatory
kernel: Rewrite distribution flag verification
tools: Update assumptions in lcnt about external atom format
stdlib: Tweak beam_lib_SUITE whitebox assumptions
orber: Remove hard dependency to external atom format
kernel: Try mend disk_log whitebox tests
erts: Mark latin1 atom encoding as deprecated
jinterface: Do not generate atoms on old latin1 external format
erl_interface: Do not generate atoms on old latin1 ext format
erts: Do not generate atoms on old latin1 external format
erts: Fix faulty ASSERT for failed dec_term
|
|
* bjorn/cuddle-with-tests:
Ensure code_SUITE:on_load_embedded/1 does not leak links
|
|
* egil/kernel/refactor-supervisor/OTP-14315:
Update primary bootstrap
kernel: Refactor supervision tree
|
|
Use maps in definitions to make them more readable.
|
|
* lukas/kernel/gen_tcp_close_docs:
kernel: Expand gen_tcp:close docs with send text
|
|
This commit attempts to clarify some of the guarantees given by
the TCP standard when issuing close. This is quite a complex
topic so there are probably corner cases still left, but this
at least tells the user that things can go wrong when doing
a close.
|
|
for OTP 20.
|
|
as it tests removed compatibility with R13 node.
|
|
* vans163/patch-1/PR-1319:
Update inet.xml. Note buffer relation to MTU
|
|
The documentation does not indicate this is the buffer responsible for the maximum bytes we can receive from a recv call.
|
|
* maint:
Updated OTP version
Prepare release
Conflicts:
OTP_VERSION
lib/typer/doc/src/notes.xml
lib/typer/vsn.mk
|
|
|
|
* hasse/fix_erl_anno_use:
parsetools: Fix handling of locations and annotations
diameter: Fix handling of locations and annotations
kernel: Fix handling of locations and annotations
compiler: Fix handling of locations and annotations
eunit: Fix handling of locations and annotations
Update preloaded
erts: Fix handling of locations and annotations
dialyzer: Fix handling of annotations in a test
debugger: Fix handling of locations and annotations
stdlib: Extend functions in erl_parse to handle form_info()
stdlib: Fix handling of locations and annotations
erts: Correct the documentation of abstract end-of-file
stdlib: Add debug tests to the erl_parse module
stdlib: improve the erl_anno module's debug tests
stdlib: Improve the erl_pp module's debug tests
|
|
|
|
|
|
after atom encoding got 1 byte smaller when changed
from
<<$d, Len:16, Bytes/binary>>
to
<<$w, Len:8, Bytes/binary>>
|
|
|
|
Conflicts:
lib/kernel/src/kernel.appup.src
lib/stdlib/src/stdlib.appup.src
|
|
The application now has an own repo, https://github.com/erlang/typer
|
|
|
|
|
|
Make sure that the symlink created in the lib directory is
deleted even if the test case fails.
|
|
|
|
* lukas/kernel/fix_os_cmd_close_race/OTP-14232:
kernel: Fix hanging os:cmd race condition
|
|
|
|
If the port terminates before Port ! close is issued,
there will be no 'closed' reply, so the old code would
hang. As it turns out there is no way to figure out
if a closed reply is supposed to come as that reply
is sent after all links and monitors are triggered.
So we have to use the synchronous port_close to close
the port.
|
|
Running this test when for some reason stdlib has been
unstickied could cause the emulator to die. So we check first
to make sure that the expected files are sticky.
|
|
* fix-source-typos: (25 commits)
Fixed typos in system/doc
Fixed typos in lib/xmerl
Fixed typos in lib/wx
Fixed typos in lib/stdlib
Fixed typos in lib/snmp
Fixed typos in lib/ssl
Fixed typos in lib/ssh
Fixed typos in PKCS-8.asn1 file
Fixed typos in lib/parsetools
Fixed typos in lib/orber
Fixed typos in lib/mnesia
Fixed typos in lib/megaco
Fixed typos in lib/kernel
Fixed typos in lib/jinterface
Fixed typos in lib/inets
Fixed typos in lib/hipe
Fixed typos in lib/eunit
Fixed typos in lib/erl_interface
Fixed typos in lib/eldap
Fixed typos in lib/edoc
...
|
|
* jur0/fix-function-name:
Fix function name
|
|
|
|
From camel case to snake case.
|
|
Extend shell c(...) to find and recompile modules
OTP-14190
|
|
|
|
|
|
* maint:
Store messages for 'rex' and 'error_logger' off heap
file: match enoent and enotdir in path_open
|
|
Store messages for 'rex' and 'error_logger' off heap
OTP-14192
|