Skip to content

Commit eb478f6

Browse files
fix:fix config recreate NPE. (#565)
1 parent bc53f1c commit eb478f6

File tree

4 files changed

+9
-36
lines changed

4 files changed

+9
-36
lines changed

polaris-configuration/polaris-configuration-client/src/main/java/com/tencent/polaris/configuration/client/internal/ConfigFileLongPullService.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -107,15 +107,6 @@ public void addConfigFile(RemoteConfigFileRepo remoteConfigFileRepo) {
107107
}
108108
}
109109

110-
public void removeConfigFile(RemoteConfigFileRepo remoteConfigFileRepo) {
111-
ConfigFileMetadata configFileMetadata = remoteConfigFileRepo.getConfigFileMetadata();
112-
long version = remoteConfigFileRepo.getConfigFileVersion();
113-
LOGGER.info("[Config] remove long polling config file. file = {}, version = {}", configFileMetadata, version);
114-
configFilePool.remove(configFileMetadata);
115-
//长轮询起始的配置文件版本号应该以第一次同步拉取为准
116-
notifiedVersion.remove(configFileMetadata);
117-
}
118-
119110
private void startLongPollingTask() {
120111
if (!started.compareAndSet(false, true)) {
121112
return;
@@ -157,7 +148,7 @@ private void doLongPolling() {
157148
changedConfigFile.getFileGroup(),
158149
changedConfigFile.getFileName());
159150
long newNotifiedVersion = changedConfigFile.getVersion();
160-
long oldNotifiedVersion = notifiedVersion.get(metadata);
151+
long oldNotifiedVersion = notifiedVersion.getOrDefault(metadata, -1L);
161152

162153
long maxVersion = newNotifiedVersion;
163154
if (connector.isNotifiedVersionIncreaseStrictly()) {

polaris-configuration/polaris-configuration-client/src/main/java/com/tencent/polaris/configuration/client/internal/ConfigFileManager.java

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -119,17 +119,6 @@ public ConfigKVFile getConfigKVFile(ConfigFileMetadata configFileMetadata, Confi
119119
return configFile;
120120
}
121121

122-
public ConfigKVFile removeConfigKVFile(ConfigFileMetadata configFileMetadata) {
123-
ConfigKVFile configFile = null;
124-
synchronized (this) {
125-
configFile = configPropertiesFileCache.get(configFileMetadata);
126-
if (configFile != null) {
127-
configFile = configPropertiesFileCache.remove(configFileMetadata);
128-
}
129-
}
130-
return configFile;
131-
}
132-
133122
public ConfigFileResponse createConfigFile(CreateConfigFileRequest request) {
134123
com.tencent.polaris.api.plugin.configuration.ConfigFile configFile =
135124
new com.tencent.polaris.api.plugin.configuration.ConfigFile(request.getNamespace(),
@@ -172,7 +161,7 @@ public ConfigFileResponse upsertAndPublish(ConfigPublishRequest request) {
172161
public ConfigFile createConfigFile(ConfigFileMetadata configFileMetadata) {
173162

174163
ConfigFileRepo configFileRepo = new RemoteConfigFileRepo(context, longPullService, configFileFilterChain,
175-
connector, configFileMetadata, persistentHandler, this);
164+
connector, configFileMetadata, persistentHandler);
176165

177166
return new DefaultConfigFile(configFileMetadata.getNamespace(), configFileMetadata.getFileGroup(),
178167
configFileMetadata.getFileName(), configFileRepo,
@@ -181,7 +170,7 @@ public ConfigFile createConfigFile(ConfigFileMetadata configFileMetadata) {
181170

182171
public ConfigKVFile createConfigKVFile(ConfigFileMetadata configFileMetadata, ConfigFileFormat format) {
183172
ConfigFileRepo configFileRepo = new RemoteConfigFileRepo(context, longPullService, configFileFilterChain,
184-
connector, configFileMetadata, persistentHandler, this);
173+
connector, configFileMetadata, persistentHandler);
185174
switch (format) {
186175
case Properties: {
187176
return new ConfigPropertiesFile(configFileMetadata.getNamespace(), configFileMetadata.getFileGroup(),

polaris-configuration/polaris-configuration-client/src/main/java/com/tencent/polaris/configuration/client/internal/RemoteConfigFileRepo.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import com.tencent.polaris.client.api.SDKContext;
2828
import com.tencent.polaris.client.util.NamedThreadFactory;
2929
import com.tencent.polaris.configuration.api.core.ConfigFileMetadata;
30-
import com.tencent.polaris.configuration.api.core.ConfigKVFile;
3130

3231
import java.util.concurrent.ExecutorService;
3332
import java.util.concurrent.Executors;
@@ -56,8 +55,6 @@ public class RemoteConfigFileRepo extends AbstractConfigFileRepo {
5655
private final RetryPolicy retryPolicy;
5756
private ConfigFilePersistentHandler configFilePersistHandler;
5857
private final boolean fallbackToLocalCache;
59-
private final ConfigFileManager configFileManager;
60-
private final ConfigFileLongPullService pullService;
6158

6259
private String token;
6360

@@ -70,7 +67,7 @@ public RemoteConfigFileRepo(SDKContext sdkContext,
7067
ConfigFileFilterChain configFileFilterChain,
7168
ConfigFileConnector connector,
7269
ConfigFileMetadata configFileMetadata,
73-
ConfigFilePersistentHandler handler, ConfigFileManager configFileManager) {
70+
ConfigFilePersistentHandler handler) {
7471
super(sdkContext, configFileMetadata);
7572
//保证线程池正常初始化
7673
createPullExecutorService();
@@ -80,8 +77,6 @@ public RemoteConfigFileRepo(SDKContext sdkContext,
8077
this.retryPolicy = new ExponentialRetryPolicy(1, 120);
8178
this.configFilePersistHandler = handler;
8279
this.configFileFilterChain = configFileFilterChain;
83-
this.configFileManager = configFileManager;
84-
this.pullService = pullService;
8580
//获取远程调用插件实现类
8681
this.configFileConnector = connector;
8782
this.fallbackToLocalCache = sdkContext.getConfig().getConfigFile().getServerConnector().getFallbackToLocalCache();
@@ -193,8 +188,6 @@ protected void doPull() {
193188
//删除配置文件
194189
if (remoteConfigFile.get() != null) {
195190
remoteConfigFile.set(null);
196-
ConfigKVFile configKVFile = configFileManager.removeConfigKVFile(configFileMetadata);
197-
pullService.removeConfigFile(this);
198191
//删除配置文件也需要触发通知
199192
fireChangeEvent(null);
200193
}

polaris-configuration/polaris-configuration-client/src/test/java/com/tencent/polaris/configuration/client/internal/RemoteConfigFileRepoTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public void testPullSuccess() {
8888

8989
RemoteConfigFileRepo remoteConfigFileRepo =
9090
new RemoteConfigFileRepo(sdkContext, configFileLongPollingService, configFileFilterChain, configFileConnector,
91-
configFileMetadata, configFilePersistHandler, new ConfigFileManager());
91+
configFileMetadata, configFilePersistHandler);
9292

9393
verify(configFileFilterChain).execute(any(), any());
9494
verify(configFileLongPollingService).addConfigFile(remoteConfigFileRepo);
@@ -108,7 +108,7 @@ public void testPullNotFoundConfigFile() {
108108

109109
RemoteConfigFileRepo remoteConfigFileRepo =
110110
new RemoteConfigFileRepo(sdkContext, configFileLongPollingService, configFileFilterChain, configFileConnector,
111-
configFileMetadata, configFilePersistHandler, new ConfigFileManager());
111+
configFileMetadata, configFilePersistHandler);
112112

113113
verify(configFileFilterChain).execute(any(), any());
114114
verify(configFileLongPollingService).addConfigFile(remoteConfigFileRepo);
@@ -127,7 +127,7 @@ public void testPullWithUnexpectedResponseCode() {
127127

128128
RemoteConfigFileRepo remoteConfigFileRepo =
129129
new RemoteConfigFileRepo(sdkContext, configFileLongPollingService, configFileFilterChain, configFileConnector,
130-
configFileMetadata, configFilePersistHandler, new ConfigFileManager());
130+
configFileMetadata, configFilePersistHandler);
131131

132132
//重试三次
133133
verify(configFileFilterChain, times(3)).execute(any(), any());
@@ -145,7 +145,7 @@ public void testPullWithRetryException() {
145145

146146
RemoteConfigFileRepo remoteConfigFileRepo =
147147
new RemoteConfigFileRepo(sdkContext, configFileLongPollingService, configFileFilterChain, configFileConnector,
148-
configFileMetadata, configFilePersistHandler, new ConfigFileManager());
148+
configFileMetadata, configFilePersistHandler);
149149

150150
//重试三次
151151
verify(configFileFilterChain, times(3)).execute(any(), any());
@@ -171,7 +171,7 @@ public void testNotifyAndPullSecondTime() throws InterruptedException {
171171

172172
RemoteConfigFileRepo remoteConfigFileRepo =
173173
new RemoteConfigFileRepo(sdkContext, configFileLongPollingService, configFileFilterChain, configFileConnector,
174-
configFileMetadata, configFilePersistHandler, new ConfigFileManager());
174+
configFileMetadata, configFilePersistHandler);
175175

176176
AtomicInteger cbCnt = new AtomicInteger();
177177
//增加两个listener

0 commit comments

Comments
 (0)