Issue #1804: Unable to stop server after starting in SSL mode

Type: Bug ReoprtVersion: 2.6.5Priority: NormalStatus: FixedReplies: 2
#1

ObjectDB server starts & stops fine in non-SSL mode using start & stop shell scripts.

ObjectDB server starts fine in SSL mode using start script but throws error and does not stop using stop shell script.

Non-SSL mode server start/stop output:

ObjectDB Server started on port 7032.
ObjectDB Server stopped.

SSL mode server start output:

ObjectDB Server (SSL) started on port 7032.

SSL mode server stop output:

SSL Error: Unrecognized SSL message, plaintext connection?
[ObjectDB 2.6.5_01]
21

SSL mode server stack trace:

[2016-01-28 05:26:47 #1 server]
[ObjectDB 2.6.5_01] Unexpected exception (Error 990)
  Generated by Java HotSpot(TM) 64-Bit Server VM 1.8.0_11 (on Linux 2.6.32-358.6.2.el6.x86_64).
Please report this error on http://www.objectdb.com/database/issue/new
com.objectdb.o.InternalException: 21
com.objectdb.o.InternalException: 21
at com.objectdb.Server.sendSocketCommand(Server.java:275)
at com.objectdb.Server.runCommand(Server.java:221)
at com.objectdb.Server.run(Server.java:103)
at com.objectdb.Server.main(Server.java:62)

Start script:

exec ${JAVA_VM} -server -Xms16M -Xmx256M -cp ${OBJECTDB_JARS} com.objectdb.Server -conf ../objectdb.conf start

Stop script:

exec ${JAVA_VM} -server -Xms16M -Xmx256M -cp ${OBJECTDB_JARS} com.objectdb.Server -conf ../objectdb.conf stop

objectdb.conf (SSL mode - masked):

<objectdb>

<general>
        <temp path="$objectdb/temp" threshold="64mb" />
  <network inactivity-timeout="0" />
  <url-history size="50" user="true" password="true" />
  <log path="$objectdb/log/" max="8mb" stdout="false" stderr="false" />
  <log-archive path="$objectdb/log/archive/" retain="90" />
  <logger name="*" level="info" />
</general>

<database>
  <size initial="256kb" resize="256kb" page="2kb" />
  <recovery enabled="true" sync="false" path="." max="128mb" />
  <recording enabled="false" sync="false" path="." mode="write" />
  <locking version-check="true" />
  <processing cache="64mb" max-threads="10" />
  <query-cache results="32mb" programs="500" />
</database>

<entities>
  <enhancement agent="false" reflection="warning" />
  <cache ref="weak" level2="0" />
  <persist serialization="false" />
  <cascade-persist always="false" on-persist="false" on-commit="false" />
  <dirty-tracking arrays="false" />
</entities>

<schema>
</schema>

<server>
        <connection port="xxxx" max="100" />
        <data path="/opt/tomcat7/xxx" />
  <!--
  <replication url="objectdb://localhost/test.odb;user=admin;password=admin" />
  -->
</server>

<users>
  <user username="xxx" password="xxx"  ip="xxxxxx,xxxxxx" admin="true">
   <dir path="/" permissions="access,modify,create,delete" />
  </user>
</users>

<ssl enabled="true">
  <server-keystore path="$objectdb/lib/ssl/keystore" password="xxxxxx" />
  <client-truststore path="$objectdb/lib/ssl/keystore" password="xxxxxx" />
</ssl>

</objectdb>

Please investigate the issue as killing the java -server process is not a great option. Thanks.

#2

Thank you for this report. Build 2.6.6_01 fixes the issue.

Note that SSL should be enabled also in the ObjectDB configuration that is used by the STOP command, and in that case (starting 2.6.6_01) an SSL socket is used to send the STOP command to the server.

ObjectDB Support
#3

Bug fix fully validated. Thanks for the quick fix.

Reply