Age | Commit message (Collapse) | Author |
|
Do not crash with badmatch when integer part of loadavg has more than 2
digits.
|
|
I noticed that running an R16B03-1 node on an overloaded host produced
log entries like the following ones:
```
2014-08-22 21:52:31 =ERROR REPORT====
Error in process <0.24112.3> on node '[email protected]' with exit value: {{case_clause,{data,4711}},[{cpu_sup,get_uint32_measurement,2,[{file,"cpu_sup.erl"},{line,227}]},{cpu_sup,measurement_server_loop,1,[{file,"cpu_sup.erl"},{line,585}]}]}
```
```
===== ALIVE Fri Aug 22 21:50:14 CEST 2014
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
===== ALIVE Fri Aug 22 22:07:46 CEST 2014
```
I performed a code inspection on the `cpu_sup` module and I concluded
that the `case_clause` error shows a small issue in the `cpu_sup`
module, that happens when the port used in `cpu_sup` is slow to start
- as it may happen on an overloaded node.
The `cpu_sup` `gen_server` process keeps in its state the pid of an
unlinked process (called "measurement server" - see `cpu_sup:init/1`),
in order to do dirty stuff (e.g. reading the filesystem, running OS
commands) and start_link-ing & managing the connected process to a
port (called "port server" - see `measurement_server_init/0`). So the
process organization looks like this:
```
cpu_sup - measurement server - port server - port
```
When the measurement server start_links the port server (see
`port_server_start/0`) it sends a `{self(), ?ping}` message to it and
expects an answer within 6s, otherwise it returns `{error, timeout}`
rather than the pid. This has two issues:
* The measurement server keeps `{error, ...}` in its state as if it
were a pid - that makes no sense;
* A late `{Pid, {data,4711}}` response may arrive in the mailbox of
the measurement server, that will believe it to be a request to be
processed, causing a `case_clause` error.
This commit teaches the measurement server to check the success of the
initialization of the port server by matching on the return value of
`port_server_start/0` (renamed to `port_server_start_link/0` for the
sake of clarity) in order to fail earlier and with an error clearer
than `{case_clause,{data,4711}}`. In such case I expect the
measurement server to be restarted by the `cpu_sup` `gen_server` (see
`handle_call/3`) - as before.
BTW It is not clear to me when the `handle_info({'EXIT', _Port,
Reason}, State)` may be called (the `cpu_sup` `gen_server` does not
link to the measurement server) but I am leaving it.
|
|
|
|
On embedded (Linux) systems the "df" program is very often provided by
the Busybox (or Toolbox) project. This version does not provide the "-l"
option (for displaying only local filesystems) used in disksup.erl.
To make disksup work on these embedded platforms, this patch adds a new
application parameter 'disksup_posix_only', to make diskup use only
options defined in the POSIX standard:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/df.html
|
|
Most dependencies introduced are exactly the dependencies to other
applications found by xref. That is, there might be real dependencies
missing. There might also be pure debug dependencies listed that
probably should be removed. Each application has to be manually
inspected in order to ensure that all real dependencies are listed.
All dependencies introduced are to application versions used in
OTP 17.0. This since the previously used version scheme wasn't
designed for this, and in order to minimize the work of introducing
the dependencies.
|
|
Fix the appup files of runtime_tools and os_mon with wildcard
version regexps. inets, odbc and ssh regexps have been corrected
to match as originally intended.
|
|
|
|
Application memsup should be calculating free memory using the
speculative pages, in the same manner that the Activity Monitor and top
programs on OS X do. In addition, correct page size to 4096, based on
verification of available memory between top, vm_stat and Activity
Monitor.
|
|
|
|
Use 'df -k -l' to query OpenBSD about diskspace on local disks.
Same reasoning as for FreeBSD - additional filesystems without
listing them all.
|
|
Use 'df -k -l' to query FreeBSD about diskspace on local disks.
Previously 'df' -k -t ufs' was used but this will not handle zfs
disks. Just use '-l' instead of listing potential filesystems.
|
|
|
|
|
|
This is to allow space in the path.
|
|
* sm/fix-disksup-susv3/OTP-10945:
This patch fixes disksup:get_disk_data for SUSv3, specifically OS X ML
|
|
On OS X Mountain Lion, the default output of df command includes iNode
used and iNodes free, which apparent what SUSv3 specifies. This breaks
the current parse logic and reports incorrect results. This patch adds
support for the new format and ensures older versions of OS X produce
this format by adding the -i switch (which is now the default). Adding
support for this new format rather than changing df output as we'll
presumably see this on other platforms eventually.
|
|
|
|
|
|
* nox/enable-silent-rules/OTP-10726:
Implement ./otp_build configure --enable-silent-rules
|
|
With silent rules, the output of make is less verbose and compilation
warnings are easier to spot. Silent rules are disabled by default and
can be disabled or enabled at will by make V=0 and make V=1.
|
|
|
|
Conflicts:
lib/diameter/autoconf/vxworks/sed.general
xcomp/README.md
|
|
|
|
|
|
OTP-10106
OTP-10107
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* at/os_mon_dragonfly_support:
Add support for DragonFlyBSD to memsup
OTP-9217
|
|
|
|
DragonFly was partially supported by os_mon already but when trying to
start the os_mon application it'd crash with an error about an unknown
operating system in memsup. This patch changes memsup to use the FreeBSD
sysctl method to get memory information when on DragonFly.
|
|
* ks/cleanups:
percept: Clean up as suggested by tidier
percept: Modernize types and specs
parsetools: Don't use 'try...of' when 'try' will do
parsetools: Use %% for comments at the beginning of a line
parsetools: Replace lists:keysearch/3 with lists:keyfind/3
parsetools: Modernize types and specs
parsetools: Replace TABs with spaces
runtime_tools: Modernize specs
sasl: Eliminate tuple used as fun
sasl: Add missing modules to app file
asn1: Clean up as suggested by tidier
os_mon: Modernize types and specs
wx: Clean up as suggested by tidier
OTP-8455 ks/cleanups
|
|
|
|
|