[Geoserver-devel] Multiple GeoServerPersister instances

I’m noticing multiple GeoServerPersister instances getting registered as CatalogListeners both in the GeoServerPersisterTest testcase and on application start up. It doesn’t seem to be breaking anything other than producing some warnings when combined with what I’m working on but my understanding is there should only be one instance.

Anyone have any idea what’s up? Is it supposed to be doing this?

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
CatalogImpl.addListener(CatalogListener) line: 1388
SystemTestData.createCatalog() line: 286
SystemTestData.setUp() line: 123
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 148
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
owns: ConcurrentHashMap<K,V> (id=90)
owns: Object (id=91)
CatalogImpl.addListener(CatalogListener) line: 1388
DefaultGeoServerLoader.loadCatalog(Catalog, XStreamPersister) line: 50
DefaultGeoServerLoader(GeoServerLoader).postProcessBeforeInitialization(Object, String) line: 112
GeoServerLoaderProxy.postProcessBeforeInitialization(Object, String) line: 58
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyBeanPostProcessorsBeforeInitialization(Object, String) line: 394
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initializeBean(String, Object, RootBeanDefinition) line: 1448
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object) line: 519
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object) line: 456
AbstractBeanFactory$1.getObject() line: 294
DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 225
DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object, boolean) line: 291
DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 193
DefaultListableBeanFactory.preInstantiateSingletons() line: 607
GeoServerTestApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 925
GeoServerTestApplicationContext(AbstractApplicationContext).refresh() line: 472
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(SystemTestData) line: 213
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(TestData) line: 158
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 150
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Kevin Smith

Junior Software Engineer | Boundless

ksmith@anonymised.com

+1-778-785-7459

@boundlessgeo

It is not supposed to be doing this, although from your stack traces I cannot determine if SystemTestData or DefaultGeoServerLoader should own the responsibility. My money would be on DefaultGeoServerLoader.

Do you know what classes are registering persisters during normal application use? Or did I not understand you…

On Thursday, May 15, 2014, Kevin Smith <ksmith@anonymised.com.3839…> wrote:

I’m noticing multiple GeoServerPersister instances getting registered as CatalogListeners both in the GeoServerPersisterTest testcase and on application start up. It doesn’t seem to be breaking anything other than producing some warnings when combined with what I’m working on but my understanding is there should only be one instance.

Anyone have any idea what’s up? Is it supposed to be doing this?

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
CatalogImpl.addListener(CatalogListener) line: 1388
SystemTestData.createCatalog() line: 286
SystemTestData.setUp() line: 123
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 148
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
owns: ConcurrentHashMap<K,V> (id=90)
owns: Object (id=91)
CatalogImpl.addListener(CatalogListener) line: 1388
DefaultGeoServerLoader.loadCatalog(Catalog, XStreamPersister) line: 50
DefaultGeoServerLoader(GeoServerLoader).postProcessBeforeInitialization(Object, String) line: 112
GeoServerLoaderProxy.postProcessBeforeInitialization(Object, String) line: 58
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyBeanPostProcessorsBeforeInitialization(Object, String) line: 394
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initializeBean(String, Object, RootBeanDefinition) line: 1448
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object) line: 519
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object) line: 456
AbstractBeanFactory$1.getObject() line: 294
DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 225
DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object, boolean) line: 291
DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 193
DefaultListableBeanFactory.preInstantiateSingletons() line: 607
GeoServerTestApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 925
GeoServerTestApplicationContext(AbstractApplicationContext).refresh() line: 472
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(SystemTestData) line: 213
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(TestData) line: 158
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 150
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Kevin Smith

Junior Software Engineer | Boundless

ksmith@anonymised.com

+1-778-785-7459

@boundlessgeo

Jody Garnett

There is a bit of tricky logic when it comes to registering the persister during startup, it is used for a couple of purposes, one being to migrate from older configuration, you’ll see code that adds it, does something, and then removes it after. Possible something has creeped in but yes, there should only be one persister registered at any given time.

···

On Thu, May 15, 2014 at 6:47 PM, Kevin Smith <ksmith@anonymised.com> wrote:

I’m noticing multiple GeoServerPersister instances getting registered as CatalogListeners both in the GeoServerPersisterTest testcase and on application start up. It doesn’t seem to be breaking anything other than producing some warnings when combined with what I’m working on but my understanding is there should only be one instance.

Anyone have any idea what’s up? Is it supposed to be doing this?

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
CatalogImpl.addListener(CatalogListener) line: 1388
SystemTestData.createCatalog() line: 286
SystemTestData.setUp() line: 123
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 148
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
owns: ConcurrentHashMap<K,V> (id=90)
owns: Object (id=91)
CatalogImpl.addListener(CatalogListener) line: 1388
DefaultGeoServerLoader.loadCatalog(Catalog, XStreamPersister) line: 50
DefaultGeoServerLoader(GeoServerLoader).postProcessBeforeInitialization(Object, String) line: 112
GeoServerLoaderProxy.postProcessBeforeInitialization(Object, String) line: 58
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyBeanPostProcessorsBeforeInitialization(Object, String) line: 394
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initializeBean(String, Object, RootBeanDefinition) line: 1448
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object) line: 519
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object) line: 456
AbstractBeanFactory$1.getObject() line: 294
DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 225
DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object, boolean) line: 291
DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 193
DefaultListableBeanFactory.preInstantiateSingletons() line: 607
GeoServerTestApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 925
GeoServerTestApplicationContext(AbstractApplicationContext).refresh() line: 472
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(SystemTestData) line: 213
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(TestData) line: 158
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 150
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Kevin Smith

Junior Software Engineer | Boundless

ksmith@anonymised.com

+1-778-785-7459

@boundlessgeo


“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-devel mailing list
Geoserver-devel@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Justin Deoliveira
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive

can you describe how it is used to migrate an older configuration? Is it a case of migration modifying the data structure and depending on the persister to write out the change in a “modern” form? Looking over at Kevin’s debugger we are certainly seeing two GeoServerPersisters in the list of listeners.

···

Jody Garnett

On Fri, May 16, 2014 at 5:16 AM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

There is a bit of tricky logic when it comes to registering the persister during startup, it is used for a couple of purposes, one being to migrate from older configuration, you’ll see code that adds it, does something, and then removes it after. Possible something has creeped in but yes, there should only be one persister registered at any given time.


“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-devel mailing list
Geoserver-devel@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

On Thu, May 15, 2014 at 6:47 PM, Kevin Smith <ksmith@anonymised.com> wrote:

I’m noticing multiple GeoServerPersister instances getting registered as CatalogListeners both in the GeoServerPersisterTest testcase and on application start up. It doesn’t seem to be breaking anything other than producing some warnings when combined with what I’m working on but my understanding is there should only be one instance.

Anyone have any idea what’s up? Is it supposed to be doing this?

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
CatalogImpl.addListener(CatalogListener) line: 1388
SystemTestData.createCatalog() line: 286
SystemTestData.setUp() line: 123
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 148
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
owns: ConcurrentHashMap<K,V> (id=90)
owns: Object (id=91)
CatalogImpl.addListener(CatalogListener) line: 1388
DefaultGeoServerLoader.loadCatalog(Catalog, XStreamPersister) line: 50
DefaultGeoServerLoader(GeoServerLoader).postProcessBeforeInitialization(Object, String) line: 112
GeoServerLoaderProxy.postProcessBeforeInitialization(Object, String) line: 58
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyBeanPostProcessorsBeforeInitialization(Object, String) line: 394
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initializeBean(String, Object, RootBeanDefinition) line: 1448
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object) line: 519
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object) line: 456
AbstractBeanFactory$1.getObject() line: 294
DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 225
DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object, boolean) line: 291
DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 193
DefaultListableBeanFactory.preInstantiateSingletons() line: 607
GeoServerTestApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 925
GeoServerTestApplicationContext(AbstractApplicationContext).refresh() line: 472
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(SystemTestData) line: 213
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(TestData) line: 158
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 150
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Kevin Smith

Junior Software Engineer | Boundless

ksmith@anonymised.com

+1-778-785-7459

@boundlessgeo


“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Justin Deoliveira
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive

The way it works is that when GeoServer starts up and recognizes a pre 2.x data directory it adds the persister before reading it. That way while it reads it and populates the catalog all the objects are serialized out in the current format.

This differs from a normal start up in which the persister is not added until after the entire catalog/config contents is read.

···

On Fri, May 16, 2014 at 10:31 AM, Jody Garnett <jody.garnett@anonymised.com> wrote:

can you describe how it is used to migrate an older configuration? Is it a case of migration modifying the data structure and depending on the persister to write out the change in a “modern” form? Looking over at Kevin’s debugger we are certainly seeing two GeoServerPersisters in the list of listeners.

Justin Deoliveira
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive

Jody Garnett

On Fri, May 16, 2014 at 5:16 AM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

There is a bit of tricky logic when it comes to registering the persister during startup, it is used for a couple of purposes, one being to migrate from older configuration, you’ll see code that adds it, does something, and then removes it after. Possible something has creeped in but yes, there should only be one persister registered at any given time.


“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

On Thu, May 15, 2014 at 6:47 PM, Kevin Smith <ksmith@anonymised.com> wrote:

I’m noticing multiple GeoServerPersister instances getting registered as CatalogListeners both in the GeoServerPersisterTest testcase and on application start up. It doesn’t seem to be breaking anything other than producing some warnings when combined with what I’m working on but my understanding is there should only be one instance.

Anyone have any idea what’s up? Is it supposed to be doing this?

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
CatalogImpl.addListener(CatalogListener) line: 1388
SystemTestData.createCatalog() line: 286
SystemTestData.setUp() line: 123
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 148
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
owns: ConcurrentHashMap<K,V> (id=90)
owns: Object (id=91)
CatalogImpl.addListener(CatalogListener) line: 1388
DefaultGeoServerLoader.loadCatalog(Catalog, XStreamPersister) line: 50
DefaultGeoServerLoader(GeoServerLoader).postProcessBeforeInitialization(Object, String) line: 112
GeoServerLoaderProxy.postProcessBeforeInitialization(Object, String) line: 58
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyBeanPostProcessorsBeforeInitialization(Object, String) line: 394
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initializeBean(String, Object, RootBeanDefinition) line: 1448
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object) line: 519
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object) line: 456
AbstractBeanFactory$1.getObject() line: 294
DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 225
DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object, boolean) line: 291
DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 193
DefaultListableBeanFactory.preInstantiateSingletons() line: 607
GeoServerTestApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 925
GeoServerTestApplicationContext(AbstractApplicationContext).refresh() line: 472
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(SystemTestData) line: 213
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(TestData) line: 158
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 150
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Kevin Smith

Junior Software Engineer | Boundless

ksmith@anonymised.com

+1-778-785-7459

@boundlessgeo


“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Justin Deoliveira
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive

So it is likely that our test cases use a “pre 2.x” data directory then - is it worth fixing that?

Can we unregister the persister after it is done reading … or were you expecting that to already be done…

···

Jody Garnett

On Mon, May 19, 2014 at 11:37 PM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

The way it works is that when GeoServer starts up and recognizes a pre 2.x data directory it adds the persister before reading it. That way while it reads it and populates the catalog all the objects are serialized out in the current format.

This differs from a normal start up in which the persister is not added until after the entire catalog/config contents is read.

On Fri, May 16, 2014 at 10:31 AM, Jody Garnett <jody.garnett@anonymised.com> wrote:

can you describe how it is used to migrate an older configuration? Is it a case of migration modifying the data structure and depending on the persister to write out the change in a “modern” form? Looking over at Kevin’s debugger we are certainly seeing two GeoServerPersisters in the list of listeners.

Justin Deoliveira
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive

Jody Garnett

On Fri, May 16, 2014 at 5:16 AM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

There is a bit of tricky logic when it comes to registering the persister during startup, it is used for a couple of purposes, one being to migrate from older configuration, you’ll see code that adds it, does something, and then removes it after. Possible something has creeped in but yes, there should only be one persister registered at any given time.


“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

On Thu, May 15, 2014 at 6:47 PM, Kevin Smith <ksmith@anonymised.com> wrote:

I’m noticing multiple GeoServerPersister instances getting registered as CatalogListeners both in the GeoServerPersisterTest testcase and on application start up. It doesn’t seem to be breaking anything other than producing some warnings when combined with what I’m working on but my understanding is there should only be one instance.

Anyone have any idea what’s up? Is it supposed to be doing this?

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
CatalogImpl.addListener(CatalogListener) line: 1388
SystemTestData.createCatalog() line: 286
SystemTestData.setUp() line: 123
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 148
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
owns: ConcurrentHashMap<K,V> (id=90)
owns: Object (id=91)
CatalogImpl.addListener(CatalogListener) line: 1388
DefaultGeoServerLoader.loadCatalog(Catalog, XStreamPersister) line: 50
DefaultGeoServerLoader(GeoServerLoader).postProcessBeforeInitialization(Object, String) line: 112
GeoServerLoaderProxy.postProcessBeforeInitialization(Object, String) line: 58
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyBeanPostProcessorsBeforeInitialization(Object, String) line: 394
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initializeBean(String, Object, RootBeanDefinition) line: 1448
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object) line: 519
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object) line: 456
AbstractBeanFactory$1.getObject() line: 294
DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 225
DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object, boolean) line: 291
DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 193
DefaultListableBeanFactory.preInstantiateSingletons() line: 607
GeoServerTestApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 925
GeoServerTestApplicationContext(AbstractApplicationContext).refresh() line: 472
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(SystemTestData) line: 213
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(TestData) line: 158
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 150
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Kevin Smith

Junior Software Engineer | Boundless

ksmith@anonymised.com

+1-778-785-7459

@boundlessgeo


“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Justin Deoliveira
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive

IF the test case is extending from the old GeoServerAbstractTestSupport base class then it would be using a pre 2.x data directory. If it extends from GeoServerSystemTestSupport then it would be using a post 2.x version.

···

On Tue, May 20, 2014 at 6:56 AM, Jody Garnett <jody.garnett@anonymised.com> wrote:

So it is likely that our test cases use a “pre 2.x” data directory then - is it worth fixing that?

Can we unregister the persister after it is done reading … or were you expecting that to already be done…

Justin Deoliveira
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive

Jody Garnett

On Mon, May 19, 2014 at 11:37 PM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

The way it works is that when GeoServer starts up and recognizes a pre 2.x data directory it adds the persister before reading it. That way while it reads it and populates the catalog all the objects are serialized out in the current format.

This differs from a normal start up in which the persister is not added until after the entire catalog/config contents is read.

On Fri, May 16, 2014 at 10:31 AM, Jody Garnett <jody.garnett@anonymised.com> wrote:

can you describe how it is used to migrate an older configuration? Is it a case of migration modifying the data structure and depending on the persister to write out the change in a “modern” form? Looking over at Kevin’s debugger we are certainly seeing two GeoServerPersisters in the list of listeners.

Justin Deoliveira
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive

Jody Garnett

On Fri, May 16, 2014 at 5:16 AM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

There is a bit of tricky logic when it comes to registering the persister during startup, it is used for a couple of purposes, one being to migrate from older configuration, you’ll see code that adds it, does something, and then removes it after. Possible something has creeped in but yes, there should only be one persister registered at any given time.


“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

On Thu, May 15, 2014 at 6:47 PM, Kevin Smith <ksmith@anonymised.com> wrote:

I’m noticing multiple GeoServerPersister instances getting registered as CatalogListeners both in the GeoServerPersisterTest testcase and on application start up. It doesn’t seem to be breaking anything other than producing some warnings when combined with what I’m working on but my understanding is there should only be one instance.

Anyone have any idea what’s up? Is it supposed to be doing this?

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
CatalogImpl.addListener(CatalogListener) line: 1388
SystemTestData.createCatalog() line: 286
SystemTestData.setUp() line: 123
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 148
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
owns: ConcurrentHashMap<K,V> (id=90)
owns: Object (id=91)
CatalogImpl.addListener(CatalogListener) line: 1388
DefaultGeoServerLoader.loadCatalog(Catalog, XStreamPersister) line: 50
DefaultGeoServerLoader(GeoServerLoader).postProcessBeforeInitialization(Object, String) line: 112
GeoServerLoaderProxy.postProcessBeforeInitialization(Object, String) line: 58
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyBeanPostProcessorsBeforeInitialization(Object, String) line: 394
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initializeBean(String, Object, RootBeanDefinition) line: 1448
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object) line: 519
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object) line: 456
AbstractBeanFactory$1.getObject() line: 294
DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 225
DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object, boolean) line: 291
DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 193
DefaultListableBeanFactory.preInstantiateSingletons() line: 607
GeoServerTestApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 925
GeoServerTestApplicationContext(AbstractApplicationContext).refresh() line: 472
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(SystemTestData) line: 213
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(TestData) line: 158
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 150
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Kevin Smith

Junior Software Engineer | Boundless

ksmith@anonymised.com

+1-778-785-7459

@boundlessgeo


“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Justin Deoliveira
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive

It extends GeoServerSystemTestSupport, and the data directory I used when testing a regular start up was a copy of data/release.

···

On 21 May 2014 06:43, Justin Deoliveira <jdeolive@anonymised.com> wrote:

IF the test case is extending from the old GeoServerAbstractTestSupport base class then it would be using a pre 2.x data directory. If it extends from GeoServerSystemTestSupport then it would be using a post 2.x version.

Kevin Smith

Junior Software Engineer | Boundless

ksmith@anonymised.com

+1-778-785-7459

@boundlessgeo

On Tue, May 20, 2014 at 6:56 AM, Jody Garnett <jody.garnett@anonymised.com> wrote:

So it is likely that our test cases use a “pre 2.x” data directory then - is it worth fixing that?

Can we unregister the persister after it is done reading … or were you expecting that to already be done…

Justin Deoliveira
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive

Jody Garnett

On Mon, May 19, 2014 at 11:37 PM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

The way it works is that when GeoServer starts up and recognizes a pre 2.x data directory it adds the persister before reading it. That way while it reads it and populates the catalog all the objects are serialized out in the current format.

This differs from a normal start up in which the persister is not added until after the entire catalog/config contents is read.

On Fri, May 16, 2014 at 10:31 AM, Jody Garnett <jody.garnett@anonymised.com> wrote:

can you describe how it is used to migrate an older configuration? Is it a case of migration modifying the data structure and depending on the persister to write out the change in a “modern” form? Looking over at Kevin’s debugger we are certainly seeing two GeoServerPersisters in the list of listeners.

Justin Deoliveira
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive

Jody Garnett

On Fri, May 16, 2014 at 5:16 AM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

There is a bit of tricky logic when it comes to registering the persister during startup, it is used for a couple of purposes, one being to migrate from older configuration, you’ll see code that adds it, does something, and then removes it after. Possible something has creeped in but yes, there should only be one persister registered at any given time.


“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

On Thu, May 15, 2014 at 6:47 PM, Kevin Smith <ksmith@anonymised.com> wrote:

I’m noticing multiple GeoServerPersister instances getting registered as CatalogListeners both in the GeoServerPersisterTest testcase and on application start up. It doesn’t seem to be breaking anything other than producing some warnings when combined with what I’m working on but my understanding is there should only be one instance.

Anyone have any idea what’s up? Is it supposed to be doing this?

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
CatalogImpl.addListener(CatalogListener) line: 1388
SystemTestData.createCatalog() line: 286
SystemTestData.setUp() line: 123
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 148
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Thread [main] (Suspended (breakpoint at line 1388 in CatalogImpl))
owns: ConcurrentHashMap<K,V> (id=90)
owns: Object (id=91)
CatalogImpl.addListener(CatalogListener) line: 1388
DefaultGeoServerLoader.loadCatalog(Catalog, XStreamPersister) line: 50
DefaultGeoServerLoader(GeoServerLoader).postProcessBeforeInitialization(Object, String) line: 112
GeoServerLoaderProxy.postProcessBeforeInitialization(Object, String) line: 58
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyBeanPostProcessorsBeforeInitialization(Object, String) line: 394
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initializeBean(String, Object, RootBeanDefinition) line: 1448
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object) line: 519
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object) line: 456
AbstractBeanFactory$1.getObject() line: 294
DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 225
DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class, Object, boolean) line: 291
DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 193
DefaultListableBeanFactory.preInstantiateSingletons() line: 607
GeoServerTestApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 925
GeoServerTestApplicationContext(AbstractApplicationContext).refresh() line: 472
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(SystemTestData) line: 213
GeoServerPersisterTest(GeoServerSystemTestSupport).setUp(TestData) line: 158
GeoServerPersisterTest(GeoServerBaseTestSupport).doSetup() line: 150
NativeMethodAccessorImpl.invoke0(Method, Object, Object) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object) line: 43
Method.invoke(Object, Object…) line: 606
FrameworkMethod$1.runReflectiveCall() line: 47
FrameworkMethod$1(ReflectiveCallable).run() line: 12
FrameworkMethod.invokeExplosively(Object, Object…) line: 44
RunBefores.evaluate() line: 24
RunAfters.evaluate() line: 27
RunRules.evaluate() line: 20
BlockJUnit4ClassRunner(ParentRunner).runLeaf(Statement, Description, RunNotifier) line: 271
BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 70
BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 238
ParentRunner$1.schedule(Runnable) line: 63
BlockJUnit4ClassRunner(ParentRunner).runChildren(RunNotifier) line: 236
ParentRunner.access$000(ParentRunner, RunNotifier) line: 53
ParentRunner$2.evaluate() line: 229
RunBefores.evaluate() line: 26
RunAfters.evaluate() line: 27
BlockJUnit4ClassRunner(ParentRunner).run(RunNotifier) line: 309
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 50
TestExecution.run(ITestReference) line: 38
RemoteTestRunner.runTests(String, String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String) line: 197

Kevin Smith

Junior Software Engineer | Boundless

ksmith@anonymised.com

+1-778-785-7459

@boundlessgeo


“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Justin Deoliveira
Vice President, Engineering | Boundless
jdeolive@anonymised.com
@j_deolive