archaius icon indicating copy to clipboard operation
archaius copied to clipboard

Two simultaneous events fired while changing the property value from JConsole (Only for single property file , for reference file (using @next) , its working fine.

Open patashish opened this issue 7 years ago • 0 comments

Dear Team,

When i change any property value , I am getting 2 events of same property instead of one event.

firstfile.properties firstkey1=firstvalue1 firstkey2=firstvalue2 @next=secondfile.properties

secondfile.properties secondkey1=secondval1

Sample Code:

public class ArchaiusSamplePropFile4JMX {

static {
	System.setProperty("archaius.configurationSource.defaultFileName", "firstfile.properties");

	try {
		ConfigurationManager.loadCascadedPropertiesFromResources("firstfile");
	} catch (IOException e) {
		e.printStackTrace();
	}

}

public void configuration() throws IOException {
	installConfig();
}

private void installConfig() {
	if (!ConfigurationManager.isConfigurationInstalled()) {

		AbstractPollingScheduler scheduler = new FixedDelayPollingScheduler(1000, 1000, true);
		PolledConfigurationSource source = new URLConfigurationSource();
		DynamicConfiguration dynamicConfig = new DynamicConfiguration(source, scheduler);
		ConfigurationManager.install(dynamicConfig);
		// Registering configuration with an MBean and will be accessible for
		// read and update via JConsole
		ConfigJMXManager.registerConfigMbean(dynamicConfig);
		printValue();
	} else {
		System.out.println(".....CONFIGURATION IS ALREADY INSTALLED....");
	}

}

final DynamicStringProperty firstkey1DynamicStringProperty = DynamicPropertyFactory.getInstance()
		.getStringProperty("firstkey1", "defaultValue", new Runnable() {

			public void run() {
				System.out.println("********* firstkey1 PROP UPDATE EVENT***************");
				printValue();
			}
		});

final DynamicStringProperty firstkey2DynamicStringProperty = DynamicPropertyFactory.getInstance()
		.getStringProperty("firstkey2", "defaultValue", new Runnable() {

			public void run() {
				System.out.println("********* firstkey2 PROP UPDATE EVENT ***************");
				printValue();
			}
		});

final DynamicStringProperty secondkey1DynamicStringProperty = DynamicPropertyFactory.getInstance()
		.getStringProperty("secondkey1", "<<<<<NOT LOADED FROM PROP FILE>>>>>>>>>", new Runnable() {

			public void run() {

				System.out.println("********* secondkey1 PROP UPDATE EVENT*************");
				printValue();
			}
		});

private void printValue() {
	StringBuilder sb = new StringBuilder();
	sb.append("\n");
	sb.append("firstkey1:");
	sb.append(firstkey1DynamicStringProperty);
	sb.append("\n");

	sb.append("firstkey2:");
	sb.append(firstkey2DynamicStringProperty);
	sb.append("\n");

	sb.append("secondkey1:");
	sb.append(secondkey1DynamicStringProperty);
	sb.append("\n");

	System.out.println(">>>>>>>>>" + sb.toString());
}

public static void main(String[] args) throws IOException, InterruptedException {

	ArchaiusSamplePropFile4JMX arch = new ArchaiusSamplePropFile4JMX();

	while (true) {
		arch.configuration();
		System.out.println("--waiting --");
		TimeUnit.SECONDS.sleep(10);
		System.out.println("----");
	}

}

}

patashish avatar Nov 10 '17 09:11 patashish