Thursday, January 14, 2016

UI issues with Oracle Endeca Experience Manager

Problem:

I recently fired up an Oracle Linux 6.6 VM with 2.6.32-504.el6.x86_64 kernel. Installed Oracle commerce on the same and a crowd of other necessary software on the same using my custom puppet modules. When I deployed the default CRS endeca application and ran the baseline update and then tried to just browse through experience manager @ localhost:8006 I had trouble seeing contents under the firefox frame except for the application name and home icon header.

Solution:

I knew it was related to flash and so tried to do a lot of things even though my BCC with flash worked like charm - 

1. Uninstalled and installed firefox using YUM - did not work

2. Uninstalled and installed flash plugin using YUM - did not work

3. Restarted firefox, restarted VM after every try of step1 step2 - did not work

4. YUM erase firefox and flash-plugin, restarted VM installed both - did not work

5. Thought may be its an issue with the version of Firefox/Flash plugin, tried to lookup the Oracle Commerce supported environment matrix and validated and installed the exact same versions - did not work

6. With all the above combinations - redeployed and ran baseline almost every time - did not work

7. For one last time, ran YUM erase firefox and flash-plugin, restarted VM, installed firefox and flash-plugin (latest versions - Firefox (38.5 ESR), Flash plugin (11.2.202.559)), went ahead and stopped all endeca processes - PlatformServices, ToolsAndFrameworks, CAS. Renamed the workspace/state folder from all three, and restarted all 3 services again (ToolsAndFrameworks complained about non availability of state - created an empty folder to check - and it started). Ran a fresh new endeca deploy of CRS and ran a baseline and now everything worked as expected. So the issue doesnt seem to be flash but something else but wasnt able to understand as there wasnt much information in the UI.

Monday, April 27, 2015

dgidx: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

Problem:

When I tried to fire up a baseline update on my CRS Endeca application, I got the following error in my Dgidx.*.log file inside <ENDECA_BASE>/apps/CRS/logs/dgidx

dgidx: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

Solution:

First as soon as I saw this I tried to install the missing library libaio.so using my package manage (YUM on Oracle Linux)

yum install -y libaio.so

That definitely installed something but the error doesnt seem to have gone yet because I should have installed libaio as a package as against just installing the library file with a .so extension, so tried the following again and the baselineUpdate was able to get past the indexing process to deploying the index to my Authoring and Live MDEXes

yum install -y libaio


Sunday, April 26, 2015

WARNING: Unable to retrieve host 'ITLHost' associated with custom component

Problem:

When I was trying to deploy the CRS app that come with ATG11.1 on my linux box I got the following warning

WARNING: Unable to retrieve host 'ITLHost' associated with custom component 


Solution:

On looking at the Appconfig.xml and related configuration files, I found out that the warning occurred because the definition of ITLHost was happening in DataIngest.xml but it was used in WorkbenchConfig.xml which was imported before DataIngest.xml in Appconfig.xml, see below the CRS Default definition of Appconfig.xml 

  <spr:import resource="InitialSetup.xml" />
  <spr:import resource="DgraphDefaults.xml" />
  <spr:import resource="AuthoringDgraphCluster.xml" />
  <spr:import resource="LiveDgraphCluster.xml" />
  <spr:import resource="LiveAppServerCluster.xml" />
  <spr:import resource="UsageCollectionConfig.xml" />
  <spr:import resource="WorkbenchConfig.xml" />
  <spr:import resource="ReportGeneration.xml" />
  <spr:import resource="DataIngest.xml" />

  <spr:import resource="AssemblerConfig.xml" />

So changing the order of imports as follows, fixed that warning, when I tried to a new endeca deploy. See updated Appconfig.xml below..

  <spr:import resource="InitialSetup.xml" />
  <spr:import resource="DgraphDefaults.xml" />
  <spr:import resource="AuthoringDgraphCluster.xml" />
  <spr:import resource="LiveDgraphCluster.xml" />
  <spr:import resource="LiveAppServerCluster.xml" />
  <spr:import resource="UsageCollectionConfig.xml" />


  <spr:import resource="DataIngest.xml" />
  <spr:import resource="WorkbenchConfig.xml" />
  <spr:import resource="ReportGeneration.xml" />
  <spr:import resource="AssemblerConfig.xml" />

Friday, April 24, 2015

Error During BCC Deployment :: /atg/dynamo/service/jdbc/JTDataSource_production :: java.lang.IllegalStateException: Cannot delist resource, transaction has been rolled back :: Transaction timed out after 31 seconds

Problem:

I was trying to do a full deployment after setting up CA and got this error. I was using ATG 11.1 on Weblogic 12c connecting to a Oracle 12c Pluggable Database (with ojdbc7.jar) - used FakeXA as against WeblogicDS

**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production --- java.lang.IllegalStateException: Cannot delist resource, transaction has been rolled back. BEA1-346CAD26CDE45A7A06F2. xid=BEA1-346CAD26CDE45A7A06F2, status=Marked rollback. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 31 seconds 
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production BEA1-346CAD26CDE45A7A06F2]
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production at weblogic.transaction.internal.TransactionImpl.throwIllegalStateException(TransactionImpl.java:1889)
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production at weblogic.transaction.internal.ServerTransactionImpl.delistResource(ServerTransactionImpl.java:598)
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production at atg.dtm.TransactionWrapper.delistResource(TransactionWrapper.java:183)
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production at atg.service.jdbc.MonitoredDataSource.connectionClosed(MonitoredDataSource.java:1383)
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production at atg.service.jdbc.PooledXAConnection.close(PooledXAConnection.java:329)
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production at atg.service.jdbc.PooledMonitoredConnection.close(PooledMonitoredConnection.java:312)
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production at atg.adapter.gsa.GSATransaction.closeConnection(GSATransaction.java:808)
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production at atg.adapter.gsa.GSAItemDescriptor.close(GSAItemDescriptor.java:2764)
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production at atg.adapter.gsa.GSAItemDescriptor.addItem(GSAItemDescriptor.java:7418)
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production at atg.adapter.gsa.GSARepository.addItem(GSARepository.java:1054)
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production at atg.deployment.repository.RepositoryWorkerThread.deployItem(RepositoryWorkerThread.java:1128)
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production at atg.deployment.repository.RepositoryWorkerThread.processMarkerForAddUpdatePhase(RepositoryWorkerThread.java:263)
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production at atg.deployment.DeploymentWorkerThread.processMarkerPhase(DeploymentWorkerThread.java:562)
**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production at atg.deployment.DeploymentWorkerThread.run(DeploymentWorkerThread.java:335)

**** Error Fri Apr 24 15:30:15 UTC 2015 1429889415294 /atg/dynamo/service/jdbc/JTDataSource_production

Solution:

Changed the JTA transaction timeout from 30 to 200 and the issue got resolved.

Tuesday, April 29, 2014

Installing JDK on Oracle Linux got this error error: Failed dependencies: bin/basename is needed by jdk-2000:1.6.0_38-fcs.x86_64

Problem

I was trying to setup my Oracle Enterprise Linux docker container with JDK and ran into this problem when I tried to execute the rpm.bin file, couldnt figure out the reason after tons of searches on internet and eventually solved it as mentioned in the Solution.

bash-4.1# cp /Software/linux/java/jdk-6u38-linux-x64-rpm.bin .
bash-4.1# chmod 755 jdk-6u38-linux-x64-rpm.bin
bash-4.1# ./jdk-6u38-linux-x64-rpm.bin
Unpacking...
Checksumming...
Extracting...
UnZipSFX 5.50 of 17 February 2002, by Info-ZIP (Zip-Bugs@lists.wku.edu).
  inflating: jdk-6u38-linux-amd64.rpm 
  inflating: sun-javadb-common-10.6.2-1.1.i386.rpm 
  inflating: sun-javadb-core-10.6.2-1.1.i386.rpm 
  inflating: sun-javadb-client-10.6.2-1.1.i386.rpm 
  inflating: sun-javadb-demo-10.6.2-1.1.i386.rpm 
  inflating: sun-javadb-docs-10.6.2-1.1.i386.rpm 
  inflating: sun-javadb-javadoc-10.6.2-1.1.i386.rpm 
error: Failed dependencies:
    /bin/basename is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /bin/cat is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /bin/cp is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /bin/gawk is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /bin/grep is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /bin/ln is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /bin/ls is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /bin/mkdir is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /bin/mv is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /bin/pwd is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /bin/rm is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /bin/sed is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /bin/sort is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /bin/touch is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /usr/bin/cut is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /usr/bin/dirname is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /usr/bin/expr is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /usr/bin/find is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /usr/bin/tail is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /usr/bin/tr is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /usr/bin/wc is needed by jdk-2000:1.6.0_38-fcs.x86_64
    /bin/sh is needed by jdk-2000:1.6.0_38-fcs.x86_64
Installing JavaDB
error: Failed dependencies:
    /bin/sh is needed by sun-javadb-core-10.6.2-1.1.i386

Done.
bash-4.1# 



Solution

Download the .bin file which doesnt say .rpm.bin and follow the same installation process and it just works :)

http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html#jdk-6u38-oth-JPR


 Linux x6465.66 MB   jdk-6u38-linux-x64-rpm.bin
 Linux x6468.72 MB   jdk-6u38-linux-x64.bin
 

Tuesday, April 22, 2014

Vagrant + Docker :: Could not find repository on any of the indexed registries

ahoProblem

I was trying my hands on Docker provisioning with Vagrant and came across this error when I tried to provision a VM with a docker container that I uploaded to the docker registry earlier.

Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "oel631"
  config.vm.network :forwarded_port, guest: 9090, host: 9090, auto_correct: true
  config.vm.synced_folder "/Users/Naga/Downloads/Software", "/Software"
  config.vm.provider :virtualbox do |vb|
     vb.customize ["modifyvm", :id, "--memory", 4096]
     vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
     vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
  end
  config.vm.provision "docker" do |d|
    d.run "asnagaraj/java7u55tomcat7053ubuntu", 

      daemonize: true, 
      cmd: "echo hello world",
      args: "-v '/Software:/Software'"
   end
end


Could not find repository on any of the indexed registries

Solution

Add dns="8.8.8.8" argument to the run command to make sure the docker container has access to internet to resolve hosts and access and download the images

Updated Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "oel631"
  config.vm.network :forwarded_port, guest: 9090, host: 9090, auto_correct: true
  config.vm.synced_folder "/Users/Naga/Downloads/Software", "/Software"
  config.vm.provider :virtualbox do |vb|
     vb.customize ["modifyvm", :id, "--memory", 4096]
     vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
     vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
  end
  config.vm.provision "docker" do |d|
    d.run "asnagaraj/java7u55tomcat7053ubuntu",
      daemonize: true,
      cmd: "echo hello world",
      args: "--dns='8.8.8.8'  -v '/Software:/Software'"
  end
end


[vagrant@localhost ~]$ sudo docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
asnagaraj/java7u55tomcat7053ubuntu   latest              7e10245f1e4c        4 days ago          737.3 MB

Issues using Docker provisioning on Vagrant

Problem

I wanted to try my hands with Docker provisioning on Vagrant this weekend and came across tons of issues and the main issue was around docker provisioner...

* The 'docker' provisioner could not be found.  (was using super old Vagrant version 1.3.5 so upgraded to 1.5.3)

Vagrantfile Sample 1

Vagrant.configure("2") do |config|
  config.vm.box = "oel631"
  config.vm.provision "docker",
    images: ["ubuntu"]
end



Error while trying to bring up my VM / provision it when it was already running

Docker is not running on the guest VM.


Vagrantfile Sample 2 

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "precise64"

  config.vm.provision "docker" do |d|
    d.pull_images "ubuntu"
  end
end


Vagrant assumes that this means the command failed!
service docker start
Stdout from the command:
Stderr from the command:
stdin: is not a tty
start: Job is already running: docker


Vagrantfile Sample 3

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "precise64"

  config.vm.provision "docker" do |d|
    d.run "ubuntu",
      cmd: "bash -l",
      args: "-v '/vagrant:/var/www'"
    end
end


The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

service docker start

Stdout from the command:



Stderr from the command:

stdin: is not a tty
start: Job is already running: docker


Solution

Got a resolution to upgrade to Vagrant 1.5.4 from the issue below after spending so much time on Google reading 1000's of post where people have used Docker provisioning on Vagrant. Seems to me like Vagrant 1.5.3 was the killer. I personally think Vagrant 1.5.3 doesnt really work well with Docker provisioning.

https://github.com/mitchellh/vagrant/issues/3487