Florian Forster [Tue, 19 Feb 2019 19:02:59 +0000 (20:02 +0100)]
Merge pull request #3093 from rubenk/sensu-fix-warning
Sensu fix warning
Ruben Kerkhof [Tue, 19 Feb 2019 17:53:19 +0000 (18:53 +0100)]
sensu plugin: fix compiler warning when build with --enable-debug
In file included from src/write_sensu.c:31:
src/write_sensu.c: In function ‘sensu_config’:
./src/daemon/plugin.h:398:20: warning: ‘%s’ directive argument is null [-Wformat-overflow=]
398 | #define DEBUG(...) plugin_log(LOG_DEBUG, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/write_sensu.c:1227:7: note: in expansion of macro ‘DEBUG’
1227 | DEBUG("write_sensu plugin: Got tag: %s", tmp);
| ^~~~~
src/write_sensu.c:1227:43: note: format string is defined here
1227 | DEBUG("write_sensu plugin: Got tag: %s", tmp);
|
Pavel Rochnyak [Tue, 19 Feb 2019 12:15:01 +0000 (19:15 +0700)]
Merge pull request #3091 from rubenk/reduce-allocations
Reduce the nr of allocations when parsing types.db
Ruben Kerkhof [Tue, 19 Feb 2019 11:39:00 +0000 (12:39 +0100)]
Please clang
Ruben Kerkhof [Tue, 19 Feb 2019 10:58:26 +0000 (11:58 +0100)]
Reduce the nr of allocations when parsing types.db
We allocate a number of times for each line in types.db.
Since plugin_register_dataset() makes a copy of the dataset anyway, we
can create the dataset on the stack instead of the heap.
This reduces the number of calloc calls on my system from 624 to 337
when running collectd -T with the default types.db.
Ruben Kerkhof [Tue, 19 Feb 2019 09:08:04 +0000 (10:08 +0100)]
Merge pull request #3085 from rubenk/handle_simple_config_errors
Handle failure of simple config callbacks
Pavel Rochnyak [Tue, 19 Feb 2019 08:14:30 +0000 (15:14 +0700)]
Merge pull request #3086 from rubenk/reduce-configure-noise
Reduce the amount of output from ./configure
Pavel Rochnyak [Tue, 19 Feb 2019 04:58:05 +0000 (11:58 +0700)]
Merge pull request #3088 from rubenk/fix-syntax-in-collectd-lua-manpage
Fix syntax in collectd lua manpage
Ruben Kerkhof [Mon, 18 Feb 2019 16:10:49 +0000 (17:10 +0100)]
Fix some rendering issues in collectd-lua(5)
Ruben Kerkhof [Mon, 18 Feb 2019 15:59:48 +0000 (16:59 +0100)]
collectd.conf(5): fix a typo
Ruben Kerkhof [Mon, 18 Feb 2019 15:59:08 +0000 (16:59 +0100)]
Reduce the amount of output from ./configure
All these flags can be found in config.log if needed.
Pavel Rochnyak [Mon, 18 Feb 2019 14:31:39 +0000 (21:31 +0700)]
Merge pull request #3080 from rubenk/rrdcached-cleanup
Rrdcached cleanup
Ruben Kerkhof [Mon, 18 Feb 2019 14:02:00 +0000 (15:02 +0100)]
Clarify error message a bit
It's not really the reading of the file(s) that fails, they can be read
fine, there are just errors in the config.
Ruben Kerkhof [Mon, 18 Feb 2019 14:00:30 +0000 (15:00 +0100)]
Do not suggest to read the logs if parsing config fails
There are no logs at this point, all output goes to stderr.
Furthermore, spreading a log message over two lines is bad practice.
Ruben Kerkhof [Mon, 18 Feb 2019 13:46:55 +0000 (14:46 +0100)]
Handle failure of simple config callbacks
When they return an error, collectd should not ignore this.
Fixes #3076
Ruben Kerkhof [Mon, 18 Feb 2019 11:09:46 +0000 (12:09 +0100)]
rrdcached: a few minor cleanups
Florian Forster [Sat, 16 Feb 2019 06:11:11 +0000 (07:11 +0100)]
Merge pull request #3078 from nward/document_snmp_complex_reads
Document the snmp plugin's use of complex reads
Nathan Ward [Sat, 16 Feb 2019 04:26:47 +0000 (17:26 +1300)]
Update documentation to reflect how threads really work these days.
Tidy up a few end of line whitespaces (editor does it automatically).
Florian Forster [Fri, 15 Feb 2019 21:05:59 +0000 (22:05 +0100)]
Merge pull request #3070 from rubenk/travis-improvements
Travis improvements
Ruben Kerkhof [Wed, 13 Feb 2019 18:13:11 +0000 (19:13 +0100)]
rrdcached plugin: use designated structure initializer
Ruben Kerkhof [Wed, 13 Feb 2019 17:45:53 +0000 (18:45 +0100)]
rrdcached plugin: use same attribute name for both prototypes
Ruben Kerkhof [Tue, 12 Feb 2019 13:13:34 +0000 (14:13 +0100)]
Travis: try to fix env settings
Ruben Kerkhof [Tue, 12 Feb 2019 13:12:13 +0000 (14:12 +0100)]
Travis: try to fix protobuf header detection
Ruben Kerkhof [Tue, 12 Feb 2019 13:09:29 +0000 (14:09 +0100)]
Travis: try to make mysql plugin build on OSX
Matthias Runge [Tue, 12 Feb 2019 12:58:27 +0000 (13:58 +0100)]
Merge pull request #3061 from octo/docs
CONTRIBUTING.md: Improve wording around ChangeLog; fix example.
Ruben Kerkhof [Tue, 12 Feb 2019 12:17:36 +0000 (13:17 +0100)]
Travis: Use two cores to run make
Travis instances have two cores, see https://docs.travis-ci.com/user/reference/overview/#virtualization-environments
Ruben Kerkhof [Tue, 12 Feb 2019 12:11:35 +0000 (13:11 +0100)]
Travis: fetch just the tip of the git branch
Ruben Kerkhof [Tue, 12 Feb 2019 12:10:36 +0000 (13:10 +0100)]
Travis: we don't use submodules
Ruben Kerkhof [Tue, 12 Feb 2019 12:10:06 +0000 (13:10 +0100)]
Travis: silence git clone
Ruben Kerkhof [Tue, 12 Feb 2019 11:43:43 +0000 (12:43 +0100)]
Travis: install dependency for amqp1 plugin on OSX
Ruben Kerkhof [Tue, 12 Feb 2019 11:37:27 +0000 (12:37 +0100)]
Travis: explicitly set compiler to clang on OSX
Ruben Kerkhof [Tue, 12 Feb 2019 11:34:51 +0000 (12:34 +0100)]
Travis: build collectd with debug enabled
Ruben Kerkhof [Tue, 12 Feb 2019 11:32:25 +0000 (12:32 +0100)]
Travis: only use clang on OSX
gcc is an alias for clang
Ruben Kerkhof [Tue, 12 Feb 2019 10:39:23 +0000 (11:39 +0100)]
Travis: install the right dependency on Xenial
libmosquitto0-dev became libmosquitto-dev
Ruben Kerkhof [Tue, 12 Feb 2019 10:19:33 +0000 (11:19 +0100)]
Travis: use newer Xcode image
Ruben Kerkhof [Tue, 12 Feb 2019 10:18:43 +0000 (11:18 +0100)]
Travis: do a verbose autoreconf
Ruben Kerkhof [Tue, 12 Feb 2019 10:18:08 +0000 (11:18 +0100)]
Travis: disable dependency tracking
Should speed up the build a bit
Ruben Kerkhof [Tue, 12 Feb 2019 10:16:48 +0000 (11:16 +0100)]
Travis: switch to Xenial
Trusty is almost end of life
Ruben Kerkhof [Tue, 12 Feb 2019 10:15:49 +0000 (11:15 +0100)]
Travis: remove obsolete option
The container builds are deprecated:
https://changelog.travis-ci.com/the-container-based-build-environment-is-fully-deprecated-84517
Ruben Kerkhof [Tue, 12 Feb 2019 10:13:13 +0000 (11:13 +0100)]
Run make distcheck instead of make && make check
The advantage being that this tests that all needed files end up in the
tarball and that make clean leaves nothing behind
Ruben Kerkhof [Tue, 12 Feb 2019 10:11:45 +0000 (11:11 +0100)]
Merge pull request #3055 from dfandrich/travis
Add OS X to the Travis build matrix.
Ruben Kerkhof [Tue, 12 Feb 2019 08:57:46 +0000 (09:57 +0100)]
Merge pull request #3021 from rubenk/libcollectdclient-fix-stringop-warning
Libcollectdclient fix stringop warning
Florian Forster [Tue, 12 Feb 2019 08:37:26 +0000 (09:37 +0100)]
Merge pull request #2961 from octo/ff/utils
Tree wide: Move utilities and libraries to src/utils/.
Florian Forster [Tue, 12 Feb 2019 08:20:53 +0000 (09:20 +0100)]
.travis.yml: Use the "apt" and "homebrew" add-ons.
This might be more optimized than installing ourselves.
Florian Forster [Tue, 12 Feb 2019 07:42:51 +0000 (08:42 +0100)]
.travis.yml: Remove $(nproc).
nproc is not available on Mac OS X.
Florian Forster [Thu, 18 Oct 2018 15:03:47 +0000 (17:03 +0200)]
Tree wide: Move utilities and libraries to src/utils/.
This is a first step that does not yet include *all* "utils_*.c" files,
but we're getting there.
Dan Fandrich [Fri, 1 Feb 2019 13:14:14 +0000 (14:14 +0100)]
Add OS X to the Travis build matrix.
Florian Forster [Sun, 10 Feb 2019 20:50:51 +0000 (21:50 +0100)]
Merge branch 'collectd-5.8'
Conflicts:
src/sensors.c
Florian Forster [Sun, 10 Feb 2019 20:44:20 +0000 (21:44 +0100)]
Merge branch 'collectd-5.7' into collectd-5.8
Florian Forster [Sun, 10 Feb 2019 13:21:23 +0000 (14:21 +0100)]
docs/CONTRIBUTING.md: s/test/text/
Florian Forster [Sun, 10 Feb 2019 06:41:53 +0000 (07:41 +0100)]
Move CONTRIBUTING.md to the docs/ directory.
Florian Forster [Sun, 10 Feb 2019 06:41:29 +0000 (07:41 +0100)]
CONTRIBUTING.md: Clarify our requirements for a "ChangeLog:" line.
collectd bot [Thu, 7 Feb 2019 13:19:41 +0000 (14:19 +0100)]
Auto-Merge pull request #3063 from octo/issue/3062
Automatically merged due to "Automerge" label
Florian Forster [Thu, 7 Feb 2019 10:33:16 +0000 (11:33 +0100)]
strjoin(): Fix behavior if output buffer is NULL.
Additionally, test the (NULL, 0) output buffer for all test cases rather
than an individual, isolated test case.
Fixes: #3062
Ruben Kerkhof [Fri, 14 Dec 2018 16:28:37 +0000 (17:28 +0100)]
libcollectdclient: fix minor cosmetic issue
String should be NUL-terminated, so compare with the NUL char
Ruben Kerkhof [Fri, 14 Dec 2018 16:27:44 +0000 (17:27 +0100)]
libcollectdclient: fix gcc warning
make[1]: Entering directory '/home/ruben/src/collectd'
CC src/libcollectdclient/libcollectdclient_la-network_parse.lo
In function ‘parse_string’,
inlined from ‘parse_identifier’ at src/libcollectdclient/network_parse.c:169:7,
inlined from ‘network_parse.constprop’ at src/libcollectdclient/network_parse.c:540:11:
src/libcollectdclient/network_parse.c:161:3: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
strncpy(out, in, out_size);
^~~~~~~~~~~~~~~~~~~~~~~~~~
collectd bot [Thu, 7 Feb 2019 08:16:09 +0000 (09:16 +0100)]
Auto-Merge pull request #3058 from cjmayo/debug_utf8
Automatically merged due to "Automerge" label
Florian Forster [Thu, 7 Feb 2019 08:04:29 +0000 (09:04 +0100)]
Merge pull request #3057 from cjmayo/style_smart_temperature
collection3: Add Type for smart_temperature
Florian Forster [Thu, 7 Feb 2019 07:55:21 +0000 (08:55 +0100)]
CONTRIBUTING.md: Improve wording around ChangeLog; fix example.
Florian Forster [Wed, 6 Feb 2019 22:16:01 +0000 (23:16 +0100)]
Merge pull request #3059 from octo/sock_cloexec
write_prometheus plugin: Only use SOCK_CLOEXEC if it is defined.
Chris Mayo [Wed, 6 Feb 2019 19:51:49 +0000 (19:51 +0000)]
collection3: Output graph.cgi debug as UTF-8
Ensure text and symbols e.g. degrees Celsius are shown as intended.
Chris Mayo [Wed, 6 Feb 2019 19:40:04 +0000 (19:40 +0000)]
collection3: Add Type for smart_temperature
Copied from Type temperature.
Florian Forster [Wed, 6 Feb 2019 14:47:00 +0000 (15:47 +0100)]
write_prometheus plugin: Only use SOCK_CLOEXEC if it is defined.
Fixes compilation issue on Mac OS X. See also #3055.
Florian Forster [Fri, 1 Feb 2019 11:14:27 +0000 (12:14 +0100)]
Merge pull request #3053 from collectd/code_owners
CODEOWNERS: Add code owners as discussed at the meetup.
Florian Forster [Fri, 1 Feb 2019 09:48:31 +0000 (10:48 +0100)]
Merge pull request #3054 from octo/docs
CONTRIBUTING.md: Document the new change log requirement / behavior.
Florian Forster [Fri, 1 Feb 2019 07:08:37 +0000 (08:08 +0100)]
CONTRIBUTING.md: Document the new change log requirement / behavior.
Florian Forster [Thu, 31 Jan 2019 15:35:39 +0000 (16:35 +0100)]
CODEOWNERS: Add code owners as discussed at the meetup.
See also: https://help.github.com/articles/about-code-owners/
Pavel Rochnyak [Thu, 31 Jan 2019 10:04:38 +0000 (17:04 +0700)]
Merge pull request #3047 from cjmayo/style_border
collection3: Improve index.cgi form fieldset border style
Chris Mayo [Wed, 30 Jan 2019 20:22:47 +0000 (20:22 +0000)]
collection3: Improve index.cgi form fieldset border style
- Fit to the form contents instead of filling the page width
- Relate better to the table below by aligning the left-hand side and
increasing the space between
Pavel Rochnyak [Wed, 30 Jan 2019 07:44:10 +0000 (14:44 +0700)]
Merge pull request #3040 from AlexZzz/collectd-5.8
Backport: netlink plugin: Use of less strict rules in link_filter_cb()
Ruben Kerkhof [Thu, 24 Jan 2019 20:35:36 +0000 (21:35 +0100)]
Merge pull request #3042 from srivasta/upstream-fixes
[python-3.7-fix]: Allow compilation with Python 3.7
Manoj Srivastava [Thu, 17 Jan 2019 19:08:56 +0000 (11:08 -0800)]
[python-3.7-fix]: Allow compilation with Python 3.7
PyOS_AfterFork() is deprecated in favour of the new functions
PyOS_BeforeFork(), PyOS_AfterFork_Parent() and
PyOS_AfterFork_Child(). (Contributed by Antoine Pitrou in bpo-16500.)
Since the -Werror=deprecated-declarations flag is on, the fact that
PyOS_AfterFork is deprecated now results in a warning, and since all
warnings being treated as errors, collectd fails to compile.
This commit detects when we have python 3.7 or newer, and uses the new
replacement function.
Signed-off-by: Manoj Srivastava <srivasta@golden-gryphon.com>
Pavel Rochnyack [Mon, 7 May 2018 15:53:23 +0000 (22:53 +0700)]
netlink plugin: Use of less strict rules in link_filter_cb()
mnl_attr_validate2() function implements strict equality check of kernel and
userspace structures size. Additional counters was added to 4.6 Linux kernel,
sizes was changed and mismatch can occur.
This patch weakened validation.
Now Collectd just checks if structures, received from kernel space, has enough
data.
Closes: #2510
# Conflicts:
# src/netlink.c
Pavel Rochnyack [Wed, 19 Dec 2018 13:44:25 +0000 (20:44 +0700)]
processes: Reduce procstat entry 'age' limit
The 'age' value can grow only when process terminated.
There is no sence to wait 10 read cycles for process rebirth.
Theoretically, this reduces probability for process data takeover by
another process with same pid.
Issue: #3026
Pavel Rochnyack [Wed, 19 Dec 2018 12:57:04 +0000 (19:57 +0700)]
processes: Fix 'delay_rate' race condition
When ts_delay_by_tgid() failed (for example, when observable process
terminates), `ps->delay` fields are not updated and remain set to zero.
This interpreted as counter overflow and produces spike.
Issue: #3026
Ruben Kerkhof [Tue, 18 Dec 2018 17:54:35 +0000 (18:54 +0100)]
collectd.conf(5): finish a sentence
Ruben Kerkhof [Tue, 18 Dec 2018 17:52:08 +0000 (18:52 +0100)]
collectd.conf(5): fix a few typos
Ruben Kerkhof [Sun, 16 Dec 2018 19:16:59 +0000 (20:16 +0100)]
Rewrite configure check for CUDA
It had a bunch of issues, one of them that it touched CFLAGS, the other
that it didn't use CUDA_CFLAGS.
The check is still too simple, we need to check if we can actually use
the library instead of just the header.
Ruben Kerkhof [Sun, 16 Dec 2018 14:11:02 +0000 (15:11 +0100)]
Treewide: do NUL-termination correctly
This is purely cosmetic but still, it sets a good example
Ruben Kerkhof [Sun, 16 Dec 2018 13:04:04 +0000 (14:04 +0100)]
Fix build
lookup_identifier_t has a few array members.
To zero-initialize these we need a pair of extra braces.
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80454
Ruben Kerkhof [Sun, 16 Dec 2018 12:40:53 +0000 (13:40 +0100)]
Fix a couple of warnings in test suite
src/utils_vl_lookup_test.c: In function ‘checked_lookup_add’:
src/utils_vl_lookup_test.c:91:3: warning: ‘strncpy’ specified bound 128 equals destination size [-Wstringop-truncation]
strncpy(ident.host, host, sizeof(ident.host));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/utils_vl_lookup_test.c:92:3: warning: ‘strncpy’ specified bound 128 equals destination size [-Wstringop-truncation]
strncpy(ident.plugin, plugin, sizeof(ident.plugin));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/utils_vl_lookup_test.c:93:3: warning: ‘strncpy’ specified bound 128 equals destination size [-Wstringop-truncation]
strncpy(ident.plugin_instance, plugin_instance,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sizeof(ident.plugin_instance));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/utils_vl_lookup_test.c:95:3: warning: ‘strncpy’ specified bound 128 equals destination size [-Wstringop-truncation]
strncpy(ident.type, type, sizeof(ident.type));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/utils_vl_lookup_test.c:96:3: warning: ‘strncpy’ specified bound 128 equals destination size [-Wstringop-truncation]
strncpy(ident.type_instance, type_instance, sizeof(ident.type_instance));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/utils_vl_lookup_test.c: In function ‘checked_lookup_search’:
src/utils_vl_lookup_test.c:113:3: warning: ‘strncpy’ specified bound 128 equals destination size [-Wstringop-truncation]
strncpy(vl.host, host, sizeof(vl.host));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/utils_vl_lookup_test.c:114:3: warning: ‘strncpy’ specified bound 128 equals destination size [-Wstringop-truncation]
strncpy(vl.plugin, plugin, sizeof(vl.plugin));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/utils_vl_lookup_test.c:115:3: warning: ‘strncpy’ specified bound 128 equals destination size [-Wstringop-truncation]
strncpy(vl.plugin_instance, plugin_instance, sizeof(vl.plugin_instance));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/utils_vl_lookup_test.c:116:3: warning: ‘strncpy’ specified bound 128 equals destination size [-Wstringop-truncation]
strncpy(vl.type, type, sizeof(vl.type));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/utils_vl_lookup_test.c:117:3: warning: ‘strncpy’ specified bound 128 equals destination size [-Wstringop-truncation]
strncpy(vl.type_instance, type_instance, sizeof(vl.type_instance));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CCLD test_utils_vl_lookup
Ruben Kerkhof [Sun, 16 Dec 2018 12:36:51 +0000 (13:36 +0100)]
Ignore test-suite.log in all directories
Florian Forster [Sun, 16 Dec 2018 07:33:39 +0000 (08:33 +0100)]
Merge pull request #3022 from rubenk/treewide-fix-some-style-issues
Treewide: fix some style issues
Ruben Kerkhof [Sat, 15 Dec 2018 18:35:42 +0000 (19:35 +0100)]
xencpu plugin: fix minor style issues
Ruben Kerkhof [Sat, 15 Dec 2018 18:26:04 +0000 (19:26 +0100)]
virt plugin: fix some minor style issues
Ruben Kerkhof [Sat, 15 Dec 2018 18:20:43 +0000 (19:20 +0100)]
utils_rrdcreate.c: fix minor style issue
Ruben Kerkhof [Sat, 15 Dec 2018 18:17:16 +0000 (19:17 +0100)]
utils_ovs.c: fix some minor stylistic issues
Ruben Kerkhof [Sat, 15 Dec 2018 18:07:56 +0000 (19:07 +0100)]
utils_db_query.c: fix some minor style issues
Ruben Kerkhof [Sat, 15 Dec 2018 18:01:41 +0000 (19:01 +0100)]
snmp_agent plugin: fix minor nit
Ruben Kerkhof [Sat, 15 Dec 2018 17:57:17 +0000 (18:57 +0100)]
postgresql plugin: fix some stylistic issues
Ruben Kerkhof [Sat, 15 Dec 2018 17:53:24 +0000 (18:53 +0100)]
ovs_stats plugin: fix some stylistic issues
Ruben Kerkhof [Sat, 15 Dec 2018 17:50:18 +0000 (18:50 +0100)]
oracle plugin: remove unneccesary cast
Ruben Kerkhof [Sat, 15 Dec 2018 17:47:13 +0000 (18:47 +0100)]
liboconfig: fix minor style issues
Ruben Kerkhof [Sat, 15 Dec 2018 17:44:40 +0000 (18:44 +0100)]
libcollectdclient: fix minor style issue
Ruben Kerkhof [Sat, 15 Dec 2018 17:42:59 +0000 (18:42 +0100)]
java plugin: fix minor style issue
Ruben Kerkhof [Sat, 15 Dec 2018 17:41:58 +0000 (18:41 +0100)]
ipmi plugin: remove unneccesary cast
Ruben Kerkhof [Sat, 15 Dec 2018 17:38:00 +0000 (18:38 +0100)]
intel_rdt plugin: fix some minor style issues
Ruben Kerkhof [Sat, 15 Dec 2018 17:36:36 +0000 (18:36 +0100)]
intel_pmu plugin: fix some minor style issues
Ruben Kerkhof [Sat, 15 Dec 2018 17:33:00 +0000 (18:33 +0100)]
gmond plugin: fix minor style issues
Ruben Kerkhof [Sat, 15 Dec 2018 17:29:29 +0000 (18:29 +0100)]
disk plugin: fix minor style issue