[ 
https://issues.apache.org/jira/browse/ARTEMIS-1653?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16425444#comment-16425444
 ] 

ASF GitHub Bot commented on ARTEMIS-1653:
-----------------------------------------

Github user franz1981 commented on a diff in the pull request:

    https://github.com/apache/activemq-artemis/pull/1986#discussion_r179124397
  
    --- Diff: 
artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/AbstractJDBCDriver.java
 ---
    @@ -191,9 +191,18 @@ private void createTableIfNotExists(String tableName, 
String... sqls) throws SQL
                 } else {
                    try (Statement statement = connection.createStatement();
                          ResultSet cntRs = 
statement.executeQuery(sqlProvider.getCountJournalRecordsSQL())) {
    -                  if (rs.next() && rs.getInt(1) > 0) {
    +                  int rows;
    +                  if (cntRs.next() && (rows = cntRs.getInt(1)) > 0) {
                          logger.tracef("Table %s did exist but is not empty. 
Skipping initialization.", tableName);
    +                     if (logger.isDebugEnabled()) {
    +                        final long expectedRows = 
Stream.of(sqls).map(String::toUpperCase).filter(sql -> sql.contains("INSERT 
INTO")).count();
    --- End diff --
    
    Nope, I meant that the check should be performed only with debug log level 
to help spotting weird behavious.
    It is not the most robust check ever, but it is pretty helpfull for HA (for 
example).


> Allow database tables to be created externally
> ----------------------------------------------
>
>                 Key: ARTEMIS-1653
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-1653
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>          Components: Broker
>    Affects Versions: 2.4.0
>            Reporter: Niels Lippke
>            Assignee: Francesco Nigro
>            Priority: Major
>
> In some environments (e.g. production) it is not allowed that applications 
> create their own schema. It's common practice to pass DDL-Statetements to 
> DBAs instead prior to rollout.
> Currently the broker does not support this scenario. If the required tables 
> already exist the broker fails to start.
> A better approach is that if the broker detects empy tables and initializes 
> them in the very same way it does if the tables dont't exist.
> See also discussion in 
> [forum|http://activemq.2283324.n4.nabble.com/ARTEMIS-Server-doesn-t-start-if-JDBC-store-is-used-and-table-NODE-MANAGER-STORE-is-empty-td4735779.html].



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to