Projects tigase _server server-core Issues #589
Installers skip step 21 (#589)
Daniel Wisnewski opened 9 years ago
Due Date
2015-12-30

The izPak installers will skip step 21 (database setup) screen when 'other database...' it selected. .exe file will give a blank page on step 21, and will show error No Database. .jar installer will show Database connection OK and then be unable to edit database.

May be related to #3574

iZpak Error.jpg Screenshot 2015-12-08 16.36.15.png Screenshot_2015-12-10_12_34_43.png

Daniel Wisnewski commented 9 years ago

Would it be best to have a notification added that other DB will require manual configuration?

wojciech.kapcia@tigase.net commented 9 years ago

I cannot reproduce it - for me Panel21 shows correctly configuration. Exe and Jar are both IzPack and are exactly the same.

Daniel Wisnewski commented 9 years ago

If advanced configuration settings is checked in step 13, step 21 has the blank page shown above, if it is not, step 21 shows as normal. Both windows and linux environments behave the same. Of course DB setup page shows errors since no DB is specified. I think we should direct users to the manual with a link for 'other DB setup' in that setup step.

wojciech.kapcia@tigase.net commented 9 years ago

Daniel Wisnewski wrote:

If advanced configuration settings is checked in step 13, step 21 has the blank page shown above, if it is not, step 21 shows as normal.

I've tried to reproduce it and it worked: attachment:Screenshot_2015-12-10_12_34_43.png

Both windows and linux environments behave the same. Of course DB setup page shows errors since no DB is specified. I think we should direct users to the manual with a link for 'other DB setup' in that setup step.

This shouldn't really happen like that because in case of selecting Other a dummy db is used:

validateDBConnection (root-db-uri): jdbc:derby:null;create=true
selectDatabase (db_uri): jdbc:derby:null;create=true
selectDatabase (jdbc.drivers): org.apache.derby.jdbc.EmbeddedDriver
selectDatabase (res_prefix): derby
selectDatabase (schema_ver_query): values TigGetDBProperty('schema-version')
selectDatabase (driver): org.apache.derby.jdbc.EmbeddedDriver@24745359
selectDatabase (driver.acceptsURL): true
DriverManager (drivers): com.mysql.jdbc.Driver@3761c3a
DriverManager (drivers): org.apache.derby.jdbc.AutoloadedDriver@a08692c
DriverManager (drivers): org.apache.derby.jdbc.EmbeddedDriver@24745359
DriverManager (drivers end):
validateDBExists (--user-db-uri): jdbc:derby:null
validateDBSchema (--user-db-uri): jdbc:derby:null
Schema exists, users: 2
addXmppAdminAccount (--auth-db-uri): null
addXmppAdminAccount (root-tigase-db-uri): jdbc:derby:null;create=true
RepositoryFactory.getAuthRepository(null, jdbc:derby:null;create=true,  + null)

Could you try running installer with -DTRACE=TRUE and examine the variables / console log?

java -jar -DTRACE=TRUE tigase-issue #7.1.0-SNAPSHOT-b4109.jar
Daniel Wisnewski commented 9 years ago

Looks like the blank page is caused by an NPE when running getUserDB. Error shows in exe and jar installer in windows environments. I cannot seem to reproduce error in Linux with newer versions.

=== Processing varName: varValue :: configType : --gen-config-def
Set: config-type = --gen-config-def
=== Processing varName: varValue :: virtualDomains : SERVER
Set: --virt-hosts = SERVER
=== Processing varName: varValue :: admins : admin@SERVER
Set: --admins = admin@SERVER
=== Processing varName: varValue :: dbType : Other
@@ getUserDB | dbVar: Other
@@ getUserDB | result: null
@@ getUserDB | dbVar: Other
@@ getUserDB | result: null
Set: --user-db = derby
=== Processing varName: varValue :: dbAuthHandle : null
=== Processing varName: varValue :: mucComponent : on
 @@ Set: acsMUC acsMUCComponent / acsMUCValue: off
Set: --comp-name-1 = muc % to:--comp-class-1=tigase.muc.MUCComponent
=== Processing varName: varValue :: PubSubComponent : on
 @@ Set: acsMUC acsPubSubComponent / acsMUCValue: off
Set: --comp-name-2 = pubsub % to:--comp-class-2=tigase.pubsub.PubSubComponent
=== Processing varName: varValue :: socks5Component : on
Set: --comp-name-3 = proxy % to:--comp-class-3=tigase.socks5.Socks5ProxyComponent
=== Processing varName: varValue :: stunComponent : off
Set: --comp-name-3 = stun % to:--comp-class-3=tigase.stun.StunComponent
=== Processing varName: varValue :: httpApiComponent : off
Set: --comp-name-3 = rest % to:--comp-class-3=tigase.http.HttpMessageReceiver
=== Processing varName: varValue :: messageArchiveComponent : on
Set: --comp-name-4 = message-archive % to:--comp-class-4=tigase.http.HttpMessageReceiver
=== Processing varName: varValue :: clusterMode : true
Set: --cluster-mode = true
=== Processing varName: varValue :: debug : null
Set: --debug = server
=== Processing varName: varValue :: plugins : null
Set: --sm-plugins = +message-archive-xep-0136,+jabber:iq:auth,+urn:ietf:params:xml:ns:xmpp-sasl,+urn:ietf:params:xml:ns:xmpp-bind,+urn:ietf:params:xml:ns:xmpp-session,+jabber:iq:register,+jabber:iq:roster,+presence,+jabber:iq:privacy,+jabber:iq:version,+http://jabber.org/protocol/stats,+starttls,+msgoffline,+vcard-temp,+http://jabber.org/protocol/commands,+jabber:iq:private,+urn:xmpp:ping,+basic-filter,+domain-filter,+pep,-zlib
=== Processing varName: varValue :: userDBUri : null
@@ getUserDB | dbVar: Other
@@ getUserDB | result: null
getDBUri | database: derby
java.lang.NullPointerException
        at com.izforge.izpack.panels.TigaseConfigSaveHelper.getDBUri(Unknown Source)
        at com.izforge.izpack.panels.TigaseConfigSaveHelper.showConfig(Unknown Source)
        at com.izforge.izpack.panels.TigaseConfigSavePanel.panelActivate(Unknown Source)
        at com.izforge.izpack.installer.InstallerFrame.switchPanel(Unknown Source)
        at com.izforge.izpack.installer.InstallerFrame.navigateNext(Unknown Source)
        at com.izforge.izpack.installer.InstallerFrame.navigateNext(Unknown Source)
        at com.izforge.izpack.installer.InstallerFrame$NavigationHandler.actionPerformed(Unknown Source)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
wojciech.kapcia@tigase.net commented 9 years ago

This is a bit difficult to track as there are no line numbers and the sources are actually in the patch file: @tigase-server/src/main/izpack/changes.patch@. I've made one change (there is one operation that should be applied under windows only, which would fit into above description) which should fix the problem.

However - given that we are phasing out IzPack installer (in favour to web based one) and "Other" option is not that essential (nor used, I would say - most people probably will go with either Derby or MySQL for a quick test) I don't think that devoting time to polishing such features makes sense -- %kobit , what do you think?

Artur Hefczyc commented 9 years ago

I agree with Wojciech. Our focus and effort should be put on the web installer instead.

issue 1 of 1
Type
Bug
Priority
Normal
Assignee
RedmineID
3640
Version
tigase-server-7.1.0
Spent time
16h 12m
Issue Votes (0)
Watchers (0)
Reference
tigase/_server/server-core#589
Please wait...
Page is in error, reload to recover