[
https://issues.apache.org/jira/browse/GEODE-5897?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16662975#comment-16662975
]
ASF subversion and git services commented on GEODE-5897:
--------------------------------------------------------
Commit bf7981f591de3e1bf16c808bf112f3d473178914 in geode's branch
refs/heads/develop from [~dschneider]
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=bf7981f5 ]
GEODE-5897: change create jndi-binding to fail on an exception (#2680)
Create jndi-binding will now fail if an exception occurs during the create.
Also the data-source is now validated by asking it for a connection when the
jndi-binding is created.
If a connection can not be obtained, the create fails and the data-source is
closed.
Previously if an exception occurred when creating a jndi-binding an info
message was logged.
Now, as the docs state, a warning is logged.
The problem was caused by an exception being caught, logged, and not rethrown.
Now the gfsh function will get the thrown exception and pass a failure back
to gfsh. For backwards compatibility, the XML parser still logs a warning if
the jndi-binding can not be created, instead of having it cause the cache not
to start.
> create jndi-binding gfsh command does not report errors
> -------------------------------------------------------
>
> Key: GEODE-5897
> URL: https://issues.apache.org/jira/browse/GEODE-5897
> Project: Geode
> Issue Type: Bug
> Components: gfsh
> Reporter: Swapnil Bawaskar
> Assignee: Darrel Schneider
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.8.0
>
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> The command succeeds even if there was an error on the server. I would expect
> the command to fail if the url has a typo, the credentials are incorrect, the
> driver class was not found on the classpath etc.
> E.g.
> {noformat}
> gfsh>create jndi-binding --connection-url=lcoalsthag --name=ds2
> --jdbc-driver-class="asdffii" --type=SIMPLE --username=foo
> Password: *****
> Member | Status | Message
> ------ | ------ |
> -------------------------------------------------------------------
> serv1 | OK | Initiated jndi binding "ds2" on "serv1". See server logs to
> verify.
> Changes to configuration for group 'cluster' are persisted.
> {noformat}
> But the server has an error in the logs:
> {noformat}
> [error 2018/10/18 11:26:27.385 PDT serv1 <Function Execution Processor2>
> tid=0x48] An Exception was caught while trying to load the driver. asdffii
> java.lang.ClassNotFoundException: asdffii
> at
> org.apache.geode.internal.ClassPathLoader.forName(ClassPathLoader.java:170)
> at
> org.apache.geode.internal.datasource.GemFireBasicDataSource.loadDriver(GemFireBasicDataSource.java:130)
> at
> org.apache.geode.internal.datasource.GemFireBasicDataSource.<init>(GemFireBasicDataSource.java:68)
> at
> org.apache.geode.internal.datasource.DataSourceFactory.getSimpleDataSource(DataSourceFactory.java:75)
> at
> org.apache.geode.internal.jndi.JNDIInvoker.mapDatasource(JNDIInvoker.java:340)
> at
> org.apache.geode.management.internal.cli.functions.CreateJndiBindingFunction.executeFunction(CreateJndiBindingFunction.java:39)
> at org.apache.geode.management.cli.CliFunction.execute(CliFunction.java:32)
> at
> org.apache.geode.internal.cache.MemberFunctionStreamingMessage.process(MemberFunctionStreamingMessage.java:193)
> at
> org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:367)
> at
> org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:432)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at
> org.apache.geode.distributed.internal.ClusterDistributionManager.runUntilShutdown(ClusterDistributionManager.java:949)
> at
> org.apache.geode.distributed.internal.ClusterDistributionManager.doFunctionExecutionThread(ClusterDistributionManager.java:803)
> at
> org.apache.geode.internal.logging.LoggingThreadFactory.lambda$newThread$0(LoggingThreadFactory.java:121)
> at java.lang.Thread.run(Thread.java:745)
> [error 2018/10/18 11:26:27.386 PDT serv1 <Function Execution Processor2>
> tid=0x48] DataSourceFactory::getSimpleDataSource:Exception while creating
> GemfireBasicDataSource.Exception String=An Exception was caught while trying
> to load the driver. asdffii
> java.sql.SQLException: An Exception was caught while trying to load the
> driver. asdffii
> at
> org.apache.geode.internal.datasource.GemFireBasicDataSource.loadDriver(GemFireBasicDataSource.java:137)
> at
> org.apache.geode.internal.datasource.GemFireBasicDataSource.<init>(GemFireBasicDataSource.java:68)
> at
> org.apache.geode.internal.datasource.DataSourceFactory.getSimpleDataSource(DataSourceFactory.java:75)
> at
> org.apache.geode.internal.jndi.JNDIInvoker.mapDatasource(JNDIInvoker.java:340)
> at
> org.apache.geode.management.internal.cli.functions.CreateJndiBindingFunction.executeFunction(CreateJndiBindingFunction.java:39)
> at org.apache.geode.management.cli.CliFunction.execute(CliFunction.java:32)
> at
> org.apache.geode.internal.cache.MemberFunctionStreamingMessage.process(MemberFunctionStreamingMessage.java:193)
> at
> org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:367)
> at
> org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:432)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> {noformat}
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)