Skip to content

fix: only load Version from properties once #1886

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

Merged
merged 2 commits into from
May 4, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public BaseConfigurationService(Version version, Cloner cloner) {
}

public BaseConfigurationService() {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Actually I'm not sure about this, really try to avoid static stuff.
Also the whole ConfigurationServiceProvider should go away soon (hopefully)

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yes, but this is actually a fix until the provider goes away. There is absolutely no reason for the version to be anything but static in any case since it never needs to be reloaded and should not change once the SDK is up.

Copy link
Collaborator

Choose a reason for hiding this comment

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

So it does not change neither in the current case, since the service is only can be initialized once. (What I achieve is to have static variables, because of the issue we having)

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

It's not true, currently, the properties are reloaded anytime you reset the ConfigurationServiceProvider.

Copy link
Collaborator

Choose a reason for hiding this comment

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

But the reset is only mean for testing purposes.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

No, it's used in QOSDK because the static nature of the provider is causing issues when the app restarts in dev mode. So yes, the static provider should be removed because it's causing more issues than helping but in the meantime, I'd like this fix (possibly for a 4.3.2 release soon with Fabric8 6.6.0 as well).

this(Utils.loadFromProperties());
this(Utils.VERSION);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,6 @@ public synchronized static void reset() {
}

static ConfigurationService createDefault() {
return new BaseConfigurationService(Utils.loadFromProperties());
return new BaseConfigurationService(Utils.VERSION);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,17 @@ public class Utils {
public static final String GENERIC_PARAMETER_TYPE_ERROR_PREFIX =
"Couldn't retrieve generic parameter type from ";

public static final Version VERSION = loadFromProperties();

/**
* Attempts to load version information from a properties file produced at build time, currently
* via the {@code git-commit-id-plugin} maven plugin.
*
* @return a {@link Version} object encapsulating the version information
* @deprecated use {@link #VERSION} instead, as this method will be made internal in a future
* release
*/
@Deprecated
public static Version loadFromProperties() {
final var is =
Thread.currentThread().getContextClassLoader().getResourceAsStream("version.properties");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ class VersionTest {

@Test
void versionShouldReturnTheSameResultFromMavenAndProperties() {
String versionFromProperties = Utils.loadFromProperties().getSdkVersion();
String versionFromProperties = Utils.VERSION.getSdkVersion();
String versionFromMaven = Version.UNKNOWN.getSdkVersion();

assertEquals(versionFromProperties, versionFromMaven);
Expand Down