Aerospike fails to start with the CRITICAL log message "trailing garbage in features.conf"

The Aerospike Knowledge Base has moved to https://support.aerospike.com. Content on https://discuss.aerospike.com is being migrated to either https://support.aerospike.com or https://docs.aerospike.com. Maintenance on articles stored in this repository ceased on December 31st 2022 and this article may be stale. If you have any questions, please do not hesitate to raise a case via https://support.aerospike.com.

Aerospike fails to start due to corrupted features.conf file - trailing garbage error

Problem Description

The asd process fails to start with the following error:

Mar 09 2021 08:49:47 GMT: CRITICAL (config): (features_ee.c:184) trailing garbage in /etc/aerospike/features.conf, line 21
Mar 09 2021 08:49:47 GMT: WARNING (as): (signal.c:166) SIGINT received, shutting down Aerospike Enterprise Edition build 5.5.0.3 os ubuntu18.04
Mar 09 2021 08:49:47 GMT: WARNING (as): (signal.c:169) startup was not complete, exiting immediately

Explanation

This issue is reported when the features.conf file has been manually edited or modified. This could also happen if the features.conf file is edited on a Windows (DOS) OS and then uploaded to Linux. Editing this file in Windows modifies the carriage returns to the Windows standard. The “diff” or “hexdump” Linux commands can be used to check whether the file is different to the original version. This issue was first introduced in versions 5.4 and 5.5. It is hotfixed in versions 5.4.0.15 and 5.5.0.10 and above (AER-6420).

Solution

Solution1:

When a file has been modified on a Windows OS the “0d 0a” windows carriage return/ line feeds can be seen in the following hexdump output.

$ hexdump -C features-1.conf |head -20
00000000  23 20 67 65 6e 65 72 61  74 65 64 20 32 30 31 38  |# generated xxxx|
00000010  2d 31 31 2d 32 38 20 31  37 3a 33 35 3a 31 34 0d  |-xxxxx xxxxxxxx.|
00000020  0a 0d 0a 66 65 61 74 75  72 65 2d 6b 65 79 2d 76  |...feature-key-v|
00000030  65 72 73 69 6f 6e 20 20  20 20 20 20 20 20 20 20  |ersion          |
00000040  20 20 20 20 31 0d 0a 73  65 72 69 61 6c 2d 6e 75  |    1..xxxxxxxxx|
00000050  6d 62 65 72 20 20 20 20  20 20 20 20 20 20 20 20  |mber            |
00000060  20 20 20 20 20 20 20 20  38 32 31 32 39 36 37 34  |        xxxxxxxx|
00000070  33 0d 0a 0d 0a 61 63 63  2d 63 6f 6d 6d 61 6e 64  |3....acc-xxxxxxx|
00000080  2d 63 65 6e 74 65 72 2d  61 70 70 20 20 20 20 20  |-xxxxxxxxxx     |
00000090  20 20 20 20 20 20 74 72  75 65 0d 0a 61 63 63 2d  |      true..acc-|
000000a0  63 6f 6d 6d 61 6e 64 2d  63 65 6e 74 65 72 2d 61  |xxxxxxxxxxxxxx-a|
000000b0  70 69 20 20 20 20 20 20  20 20 20 20 20 74 72 75  |pi           tru|
000000c0  65 0d 0a 61 73 64 62 2d  61 6c 6c 2d 66 6c 61 73  |e.xxxxxxxxxxxxxs|
000000d0  68 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |h               |
000000e0  20 20 20 20 74 72 75 65  0d 0a 61 73 64 62 2d 63  |    true..xxxx-c|
000000f0  68 61 6e 67 65 2d 6e 6f  74 69 66 69 63 61 74 69  |xxxxxxxxxxxxxxxx|
00000100  6f 6e 20 20 20 20 20 20  20 20 20 74 72 75 65 0d  |on         true.|
00000110  0a 61 73 64 62 2d 63 6f  6d 70 72 65 73 73 69 6f  |.xxxxxxxxxxxxxxx|
00000120  6e 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |n               |
00000130  20 20 74 72 75 65 0d 0a  61 73 64 62 2d 65 6e 63  |  xxxxxxxxxxxxxc|

However the Linux carriage return “0a” can be seen in the following hexdump output

$ hexdump -C features.conf |head -20
00000000  23 20 67 65 6e 65 72 61  74 65 64 20 32 30 31 38  |# generated xxxx|
00000010  2d 31 31 2d 32 38 20 31  37 3a 33 35 3a 31 34 0a  |-1xxxxxxxxxxxxx.|
00000020  0a 66 65 61 74 75 72 65  2d 6b 65 79 2d 76 65 72  |.feature-key-ver|
00000030  73 69 6f 6e 20 20 20 20  20 20 20 20 20 20 20 20  |sion            |
00000040  20 20 31 0a 73 65 72 69  61 6c 2d 6e 75 6d 62 65  |  xxxxxxxxxxxxbe|
00000050  72 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |r               |
00000060  20 20 20 20 20 38 32 31  32 39 36 37 34 33 0a 0a  |     xxxxxxxxx..|
00000070  61 63 63 2d 63 6f 6d 6d  61 6e 64 2d 63 65 6e 74  |axxxxxxxxxxxxxnt|
00000080  65 72 2d 61 70 70 20 20  20 20 20 20 20 20 20 20  |er-xxxxxx       |
00000090  20 74 72 75 65 0a 61 63  63 2d 63 6f 6d 6d 61 6e  | xxxxxxxxxcoxxxx|
000000a0  64 2d 63 65 6e 74 65 72  2d 61 70 69 20 20 20 20  |d-cxxxxxxxxxx   |
000000b0  20 20 20 20 20 20 20 74  72 75 65 0a 61 73 64 62  |       xxxx.axxx|
000000c0  2d 61 6c 6c 2d 66 6c 61  73 68 20 20 20 20 20 20  |-all-flash      |
000000d0  20 20 20 20 20 20 20 20  20 20 20 20 20 74 72 75  |             tru|
000000e0  65 0a 61 73 64 62 2d 63  68 61 6e 67 65 2d 6e 6f  |e.axxxxxxxxxxxxo|
000000f0  74 69 66 69 63 61 74 69  6f 6e 20 20 20 20 20 20  |txxxxxxxxxx     |
00000100  20 20 20 74 72 75 65 0a  61 73 64 62 2d 63 6f 6d  |   xxxxxxxxx-com|
00000110  70 72 65 73 73 69 6f 6e  20 20 20 20 20 20 20 20  |pxxxxxxxx       |
00000120  20 20 20 20 20 20 20 20  20 74 72 75 65 0a 61 73  |         true.as|
00000130  64 62 2d 65 6e 63 72 79  70 74 69 6f 6e 2d 61 74  |db-xxxxxxxxxx-at|

The Linux utility “dos2unix” can be used to convert the format:

$ dos2unix features-1.conf 
dos2unix: converting file features-1.conf to Unix format...

Solution2:

Replace the features.conf with the file provided by Aerospike in the path “/etc/aerospike/features.conf”. The Primary Technical Contact (PTC) of the account can enable users to download the current license files from the Aerospike portal. Contact Aerospike support for any further assistance.

Keywords

FEATURES.CONF LICENSE KEY

Timestamp

March 2021