Skip to content

Commit f8e88eb

Browse files
committed
Do not overwrite explicit system properties from node.properties
1 parent 89af719 commit f8e88eb

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

src/main/go/args/args.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,9 @@ func ParseOptions(fs afero.Fs, installPath string, args []string) (commands.Comm
228228

229229
// Copy node.config properties into system properties
230230
for key, value := range options.NodeConfig {
231-
options.SystemProperties[key] = value
231+
if _, exists := options.SystemProperties[key]; !exists {
232+
options.SystemProperties[key] = value
233+
}
232234
}
233235

234236
if options.Verbose {

src/main/go/args/args_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,33 @@ func TestParseCommandNameFirst(t *testing.T) {
2323
}
2424
}
2525

26+
func TestMergingProperties(t *testing.T) {
27+
t.Setenv("JAVA_HOME", "")
28+
fs := setup(t)
29+
30+
file, err := fs.Create("/etc/dir/node.properties")
31+
if err != nil {
32+
t.Fatalf("Unexpected error: %v", err)
33+
}
34+
35+
file.WriteString("node.id=from-file\nnode.name=test\n")
36+
37+
_, options, err := ParseOptions(fs, "/usr/local", []string{"--etc-dir", "/etc/dir", "-Dnode.id=from-cmd", "start"})
38+
if err != nil {
39+
t.Fatal(err)
40+
}
41+
42+
node_id, _ := options.SystemProperties["node.id"]
43+
if node_id != "from-cmd" {
44+
t.Fatalf("Expected node.id to be 'from-cmd' but got '%s'", node_id)
45+
}
46+
47+
node_name, _ := options.SystemProperties["node.name"]
48+
if node_name != "test" {
49+
t.Fatalf("Expected node.name to be 'test' but got '%s'", node_name)
50+
}
51+
}
52+
2653
func TestParseCommandNameLast(t *testing.T) {
2754
t.Setenv("JAVA_HOME", "")
2855
fs := setup(t)

0 commit comments

Comments
 (0)