@@ -106,11 +106,16 @@ private void prepareAndInitializeProvider(@Nullable String clientName,
106
106
BiConsumer <FeatureProvider , String > afterError ,
107
107
boolean waitForInit ) {
108
108
109
+ if (!isProviderRegistered (newProvider )) {
110
+ // only run afterSet if new provider is not already attached
111
+ afterSet .accept (newProvider );
112
+ }
113
+
109
114
// provider is set immediately, on this thread
110
115
FeatureProvider oldProvider = clientName != null
111
- ? this .providers .put (clientName , newProvider )
112
- : this .defaultProvider .getAndSet (newProvider );
113
- afterSet . accept ( newProvider );
116
+ ? this .providers .put (clientName , newProvider )
117
+ : this .defaultProvider .getAndSet (newProvider );
118
+
114
119
if (waitForInit ) {
115
120
initializeProvider (newProvider , afterInit , afterShutdown , afterError , oldProvider );
116
121
} else {
@@ -138,16 +143,21 @@ private void initializeProvider(FeatureProvider newProvider,
138
143
}
139
144
}
140
145
141
- private void shutDownOld (FeatureProvider oldProvider ,Consumer <FeatureProvider > afterShutdown ) {
142
- if (oldProvider != null && !isProviderRegistered (oldProvider )) {
146
+ private void shutDownOld (FeatureProvider oldProvider , Consumer <FeatureProvider > afterShutdown ) {
147
+ if (!isProviderRegistered (oldProvider )) {
143
148
shutdownProvider (oldProvider );
144
149
afterShutdown .accept (oldProvider );
145
150
}
146
151
}
147
152
148
- private boolean isProviderRegistered (FeatureProvider oldProvider ) {
149
- return oldProvider != null && (this .providers .containsValue (oldProvider )
150
- || this .defaultProvider .get ().equals (oldProvider ));
153
+ /**
154
+ * Helper to check if provider is already known (registered).
155
+ * @param provider provider to check for registration
156
+ * @return boolean true if already registered, false otherwise
157
+ */
158
+ private boolean isProviderRegistered (FeatureProvider provider ) {
159
+ return provider != null
160
+ && (this .providers .containsValue (provider ) || this .defaultProvider .get ().equals (provider ));
151
161
}
152
162
153
163
private void shutdownProvider (FeatureProvider provider ) {
0 commit comments