Sometimes in my unit-tests I get the following server-side-error, without
further exception.
Only this output ...
ERROR [SharedItemStateManager] Unable to create event state collection.
... on the client-side I get a Transaction-Rollback-Exception ...
What does this ERROR mean?
Thx,
Gamba
Gamba wrote:
>
> Thx for the hint with the UUIDs.
>
> Sure, I totally agree with you it could be an concurrency problem, because
> I'm not able ro reproduce this exceptions at the moment. During the tests
> some other excpetions occurs e.g "inactive logical session handle called"
> or
>
> javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist
> resource, see the previous warnings. tx=TransactionImple < ac,
> BasicAction: a11359c:48a:4ab35912:269d status: ActionStatus.ABORT_ONLY >
> at
> org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener$TransactionSynchronization.checkEnlisted(TxConnectionManager.java:759)
> at ...
>
> So, indeed, it looks like a concurrency problem. But I have a
> singleton-instance which should be thread-safe (only one access-point to
> jcr) and I did not expect such a behaviour. Here is the singleton code:
>
> public final class SessionSingleton
> {
> private final static Logger log =
> Logger.getLogger(SessionSingleton.class);
>
> // Made final so singleton will be read-only
> private final static SessionSingleton instance;
>
> // Static initializer
> static {
> try {
> // Perform initialization here
> instance = new SessionSingleton();
>
> if (log.isDebugEnabled()) {
> log.debug("New SessionSingleton Instance
> created ...");
> }
> }
> catch (Throwable e) {
> throw new RuntimeException(e.getMessage());
> }
> }
>
> // private construktor
> private SessionSingleton()
> {}
>
> // get Singleton-Instance
> public static SessionSingleton getInstance() {
> if (log.isDebugEnabled()) {
> System.out.println("Retrieving SessionSingleton
> instance ...");
> }
> return instance;
> }
>
> // -----
> // Methods for JCR-Access
> // -----
> public void createFolderNode(String path, String name, Repository
> repository)
> throws HMGJCRException, RepositoryException
> {
> synchronized (instance) {
> Session session = null;
> Node lastNodeInTree = null;
>
> try {
> // JackRabbit Zugriff über JNDI
> session = repository.login(new
> SimpleCredentials("user",
> "pwd".toCharArray()), "default");
>
> Node rootNode = session.getRootNode();
> lastNodeInTree = rootNode.getNode(path);
> Node addedNode = null;
>
> if (!lastNodeInTree.hasNode(name)) {
> addedNode =
> lastNodeInTree.addNode(name);
> }
> else {
> throw new HMGJCRException("Folder " +
> name + " in path " + path + "
> already existis");
> }
>
> if (log.isInfoEnabled()) {
> log.info("Folder " + name + " in path "
> + path + " added by Thread :
> " +
>
> Thread.currentThread().getName());
> }
>
> session.save();
> }
> finally {
> if (session != null) {
> session.logout();
> session = null;
> }
> }
> }
> }
>
> public void deleteFolderNode(String path, Repository repository)
> throws RepositoryException
> {
> synchronized (instance) {
> Session session = null;
> Node oldNode = null;
>
> try {
> // JackRabbit Zugriff über JNDI
> session = repository.login(new
> SimpleCredentials("user",
> "pwd".toCharArray()), "default");
>
> Node rootNode = session.getRootNode();
>
> if (rootNode.hasNode(path)) {
> oldNode = rootNode.getNode(path);
> // oldNode.lock(true, true);
> oldNode.remove();
>
> if (log.isInfoEnabled()) {
> log.info("Folder " + path + "
> deleted by Thread: " +
>
> Thread.currentThread().getName());
> }
> }
> else {
> if (log.isInfoEnabled()) {
> log.info("Folder " + path + "
> not found by Thread: " +
>
> Thread.currentThread().getName());
> }
> }
>
> session.save();
> }
> finally {
> if (session != null) {
> session.logout();
> session = null;
> }
> }
> }
> }
> }
>
> Regards,
> Gamba
>
>
--
View this message in context:
http://www.nabble.com/ERROR--EventStateCollection--Unable-to-resolve-path-for-item-...-tp25505035p25530243.html
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.