Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#4353 Config.WithFallback is acting inconsistently #4358

Conversation

Arkatufus
Copy link
Contributor

Possible fix for #4353, there might be other factors involved.

@Aaronontheweb
Copy link
Member

cc @mmisztal1980

@Aaronontheweb
Copy link
Member

@Arkatufus what exactly was the issue and how does this fix it? Asking because I'm in the dark about this

@Arkatufus
Copy link
Contributor Author

there was some inconsistency in accessing Config and keys missing during fallback merge due to keys not being copied to the new config object

@mmisztal1980
Copy link
Contributor

interesting :)

@@ -196,6 +196,8 @@ public void Merge(HoconObject other)
//if both values are objects, merge them
if (thisItem.IsObject() && otherItem.Value.IsObject())
thisItem.GetObject().Merge(otherItem.Value.GetObject());
else
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, so if I'm reading this right, if both items are objects, they are to be merged, but how is the alternative supposed to work? what is otherItem's type?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HOCON have 3 basic datatypes, Object, Array, and Literal.
Array and Literal will always override merged object fields, but when an Object met another Object, they got merged instead.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The full specification for HOCON can be read here: https://github.com/akkadotnet/hocon

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah ok, I see it now

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's give it a shot then

Copy link
Contributor

@mmisztal1980 mmisztal1980 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like that you've added a MNTK test
The changes to hocon merging appear to cover missing case(s)

@Aaronontheweb
Copy link
Member

@mmisztal1980 I'll go over this and if it's in good shape, merge it and kick it off in a nightly build. You keen to give it a try once that goes through?

Copy link
Member

@Aaronontheweb Aaronontheweb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left some questions

src/core/Akka/Actor/Settings.cs Show resolved Hide resolved
src/core/Akka/Configuration/Config.cs Show resolved Hide resolved
@@ -228,6 +241,8 @@ internal HoconObject MergeImmutable(HoconObject other)
mergedValue.AppendValue(mergedObject);
thisItems[otherItem.Key] = mergedValue;
}
else
thisItems[otherItem.Key] = otherItem.Value;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So for non-HoconObject types, we just ignored them on merge before?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, it causes a lot of missing object fields, I'm surprised that this bug went through the test suite

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a simple test case we can add for this to the HOCON test suite? Thinking about it mostly as a regression test.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We do have rigorous testing suite in the standalone HOCON project, I think we used to have a limited HOCON test suite in Akka, they might be accidentally removed.

@Aaronontheweb Aaronontheweb merged commit 3788ced into akkadotnet:dev Mar 25, 2020
@mmisztal1980
Copy link
Contributor

mmisztal1980 commented Mar 25, 2020

@mmisztal1980 I'll go over this and if it's in good shape, merge it and kick it off in a nightly build. You keen to give it a try once that goes through?

ofcourse

@Aaronontheweb Aaronontheweb added this to the 1.4.4 milestone Mar 30, 2020
Aaronontheweb added a commit to Aaronontheweb/akka.net that referenced this pull request Mar 30, 2020
This was referenced Mar 31, 2020
@Arkatufus Arkatufus deleted the #4353_Akka.Remote_port_config_reverts_to_default branch February 27, 2023 17:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants