Skip to content

Commit d6b603b

Browse files
committed
[#12502] Add alias support for agent profiles
1 parent 793ad90 commit d6b603b

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

agent-module/agent/src/main/resources/pinpoint-root.config

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
# Support external property
1212
# - -Dpinpoint.config=$MY_CONFIG_PATH/pinpoint.config
1313
pinpoint.profiler.profiles.active=release
14+
# Profiles aliases
15+
# If the profile is not found, it's treated as an alias
16+
# multiple aliases can be separated by commas.
17+
# Format: pinpoint.profiler.profiles.aliases.<profile>=<alias1>,<alias2>
18+
#pinpoint.profiler.profiles.aliases.release=prod,production
1419

1520
# Pinpoint Disable (default : false)
1621
# Using VM option or environmental variable will disable Pinpoint agent more strictly

agent-module/bootstraps/bootstrap/src/main/java/com/navercorp/pinpoint/bootstrap/config/ProfilePropertyLoader.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,12 @@
1818

1919
import com.navercorp.pinpoint.bootstrap.BootLogger;
2020
import com.navercorp.pinpoint.bootstrap.util.ProfileConstants;
21+
import com.navercorp.pinpoint.bootstrap.util.StringUtils;
2122

2223
import java.nio.file.Path;
2324
import java.nio.file.Paths;
25+
import java.util.ArrayList;
26+
import java.util.Collections;
2427
import java.util.List;
2528
import java.util.Map;
2629
import java.util.Objects;
@@ -134,11 +137,55 @@ private String getActiveProfile(Properties defaultProperties) {
134137
return supportedProfile.toString();
135138
}
136139
}
140+
141+
// handle alias
142+
String resolvedProfile = resolveAlias(defaultProperties, profile);
143+
if (resolvedProfile != null) {
144+
return resolvedProfile;
145+
}
137146
throw new IllegalStateException("unsupported profile:" + profile);
138147
}
139148

140149
private void loadProperties(Properties dstProperties, Properties property) {
141150
Map<Object, Object> copy = PropertyLoaderUtils.filterAllowedPrefix(property);
142151
dstProperties.putAll(copy);
143152
}
153+
154+
private String resolveAlias(Properties defaultProperties, String profile) {
155+
if (StringUtils.isEmpty(profile)) {
156+
return null;
157+
}
158+
159+
for (Path supportedProfile : supportedProfiles) {
160+
String supportedProfileName = supportedProfile.toString();
161+
String aliasesStr = javaSystemProperty.getProperty(ProfileConstants.PROFILE_ALIAS_KEY_PREFIX + supportedProfileName);
162+
if (aliasesStr == null) {
163+
aliasesStr = defaultProperties.getProperty(ProfileConstants.PROFILE_ALIAS_KEY_PREFIX + supportedProfileName);
164+
if (aliasesStr == null) {
165+
continue;
166+
}
167+
}
168+
169+
List<String> aliases = splitAndTrimToList(aliasesStr);
170+
for (String aliasForSupportedProfile : aliases) {
171+
if (aliasForSupportedProfile.equalsIgnoreCase(profile)) {
172+
logger.info(String.format("resolved profile alias: %s, profile: %s", profile, supportedProfileName));
173+
return supportedProfileName;
174+
}
175+
}
176+
}
177+
return null;
178+
}
179+
180+
private List<String> splitAndTrimToList(String str) {
181+
List<String> result = new ArrayList<>();
182+
String[] splits = str.split(",");
183+
for (String part : splits) {
184+
String trimmed = part.trim();
185+
if (!trimmed.isEmpty()) {
186+
result.add(trimmed);
187+
}
188+
}
189+
return result;
190+
}
144191
}

agent-module/bootstraps/bootstrap/src/main/java/com/navercorp/pinpoint/bootstrap/util/ProfileConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ public enum CONFIG_LOAD_MODE {
1212

1313
public static final String ACTIVE_PROFILE_KEY = "pinpoint.profiler.profiles.active";
1414

15+
public static final String PROFILE_ALIAS_KEY_PREFIX = "pinpoint.profiler.profiles.aliases.";
16+
1517
// 1. default config
1618
public static final String CONFIG_FILE_NAME = "pinpoint-root.config";
1719
// 2. profile config

0 commit comments

Comments
 (0)