I am trying to install 18.3 HF B on some Linux boxes, but I am receiving the following errors in the Tomcat output:
INFO [ajp-nio-8009-exec-6] org.apache.catalina.core.StandardWrapperValve.invoke 2018-10-10 17:54:43,931 [ajp-nio-8009-exec-6] WARN com.appiancorp.security.auth.activity.UserActivityFilter - Could not record user activity: secCtx=<USERNAME REDACTED>, authDetails=AuthenticationDetails[ts=2018-10-10 17:54:42.417, entryPoint=PORTAL, clientIpAddress=<IP ADDRESS REDACTED>, clientUserAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36] -- java.lang.NullPointerException
These errors are thrown every time a user clicks around, and user activity is not logged to be viewed in the admin console.
We are seeing these issues on multiple instances, both on-premise and AWS instances. Port 9300 has been added to the firewall rules for the on-premise installs, and the AWS security group is currently allowing all traffic in and out, so I don't believe it is a port issue. It is not a distributed environment. This issue is happening on both vanilla installs and migrated installs.
/etc/hosts:
127.0.0.1 localhost
<INTERNAL IP> <INTERNAL HOSTNAME>
I do see 9300 open and listening on 0.0.0.0:* when running netstat -plnt
The java process for search server is being run as the same user that installed and is running appian.
I am using the standard appian-topology, and even tried changing it to add the host and port to the search-server tag instead of the search-cluster tag.
For the migrated environment, I deleted search-local before starting up SS and Tomcat.
I am honestly at a loss, and not sure what I should try next. Has anyone else had this issue?
Discussion posts and replies are publicly visible
I am pretty sure I have narrowed it down to an Apache issue, as I bypassed the Web Server (used port 8080 and set custom.properties to http and that port) and everything worked fine. I am currently using Apache 2.4 and mod_jk 1.2.43. I did not make any changes to httpd.conf, instead I used the following files:
appian.conf (main config for all environments accessed from this Apache server):
ServerSignature Off ServerTokens Prod JkWorkersFile conf/worker.properties JkLogFile logs/mod_jk.log JkLogLevel info JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " JkExtractSSL On JkHTTPSIndicator HTTPS JkSESSIONIndicator SSL_SESSION_ID JkCIPHERIndicator SSL_CIPHER JkCERTSIndicator SSL_CLIENT_CERT JkMountCopy All LoadModule jk_module modules/mod_jk.so SSLRandomSeed startup builtin SSLRandomSeed connect builtin SSLSessionCache shmcb:/tmp/ssl_gcache_data(512000) SSLCertificateFile /etc/httpd/ssl/ssl_certificate.crt SSLCertificateKeyFile /etc/httpd/ssl/private.key SSLCertificateChainFile /etc/httpd/ssl/IntermediateCA.crt
demo.conf (config for single environment):
<VirtualHost *:80> ServerName <URL REDACTED> Redirect / <URL REDACTED> </VirtualHost> <VirtualHost *:443> SSLEngine On ServerName <URL REDACTED> JkStripSession On JkMount /suite/*.bg nodeDemo DirectoryIndex suite <Location /suite/> SetHandler jakarta-servlet SetEnv JK_WORKER_NAME nodeDemo SetEnvIf REQUEST_URI "\.css$" no-jk SetEnvIf REQUEST_URI "\.jpg$" no-jk SetEnvIf REQUEST_URI "\.js$" no-jk SetEnvIf REQUEST_URI "\.html$" no-jk SetEnvIf REQUEST_URI "\.png$" no-jk SetEnvIf REQUEST_URI "\.xml$" no-jk SetEnvIf REQUEST_URI "\.ico$" no-jk SetEnvIf REQUEST_URI "\.xsl$" no-jk SetEnvIf REQUEST_URI "\.gwt\.rpc$" no-jk SetEnvIf REQUEST_URI "\.svg$" no-jk SetEnvIf REQUEST_URI "\.htc$" no-jk SetEnvIf REQUEST_URI "\.otf$" no-jk # If the nosniff setting for the X-Content-Type-Options response # header is used, omit the SetEnvIf line for .gif extenstions. SetEnvIf REQUEST_URI "\.gif$" no-jk SetEnvIf REQUEST_URI "/suite/s/" !no-jk SetEnvIf REQUEST_URI "/suite/plugins/servlet" !no-jk </Location> <Location /extras/> SetHandler jakarta-servlet SetEnv JK_WORKER_NAME nodeDemo </Location> Alias /suite "/var/www/static-content/Appian183B/web.war" <Directory "/var/www/static-content/Appian183B/web.war"> AllowOverride FileInfo Options All AllowOverride All Require all granted </Directory> </VirtualHost>
worker.properties:
worker.list=nodeDev,nodeTest,nodeDemo worker.nodeDev.host=<INTERNAL IP REDACTED> worker.nodeDev.port=8009 worker.nodeDev.type=ajp13 worker.nodeDev.socket_connect_timeout=5000 worker.nodeDev.sticky_session=1 worker.nodeTest.host=<INTERNAL IP REDACTED> worker.nodeTest.port=8009 worker.nodeTest.type=ajp13 worker.nodeTest.socket_connect_timeout=5000 worker.nodeTest.sticky_session=1 worker.nodeDemo.host=<INTERNAL IP REDACTED> worker.nodeDemo.port=8009 worker.nodeDemo.type=ajp13 worker.nodeDemo.socket_connect_timeout=5000 worker.nodeDemo.sticky_session=1
Any thoughts?