You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@trafodion.apache.org by Eric Owhadi <er...@esgyn.com> on 2016/03/23 17:46:47 UTC

RMIInterface.java and synchronized transactional functions?

Hi Trafodioneers,



I was investigating the code path to implement parallel scanner, when I
stumbled on RMIInterface.java.

In that file, you see different treatment for transactional vs non
transactional get, delete, delete list, put, put list, checkAndPut,
checkAndDelete  getScanner.



All transactional function are “synchronized”, while all non-transactional
are not.

Given the strong drawback of synchronization on concurrency, I am wondering
if these synchronization are not left over from debugging to make the log
more readable, or if there is a strong reason why we must have them.

Someone familiar with the code?



Thanks in advance for the help,
Eric

RE: RMIInterface.java and synchronized transactional functions?

Posted by Sean Broeder <se...@esgyn.com>.
Hi Eric,
There has been some effort in the past to remove some of the
synchronization.  Much has been removed, but unfortunately much remains.  I
probably don't recall all the exceptions that we hit when the
synchronization was removed, but among them was
concurrentModificationException.  Additionally, there may have been issues
with keeping the various lists in agreement, but I'm not 100% certain on
this.

Regards,
Sean

-----Original Message-----
From: Eric Owhadi [mailto:eric.owhadi@esgyn.com]
Sent: Wednesday, March 23, 2016 9:47 AM
To: dev@trafodion.incubator.apache.org
Subject: RMIInterface.java and synchronized transactional functions?

Hi Trafodioneers,



I was investigating the code path to implement parallel scanner, when I
stumbled on RMIInterface.java.

In that file, you see different treatment for transactional vs non
transactional get, delete, delete list, put, put list, checkAndPut,
checkAndDelete  getScanner.



All transactional function are “synchronized”, while all non-transactional
are not.

Given the strong drawback of synchronization on concurrency, I am wondering
if these synchronization are not left over from debugging to make the log
more readable, or if there is a strong reason why we must have them.

Someone familiar with the code?



Thanks in advance for the help,
Eric