You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by il...@apache.org on 2018/09/02 13:59:08 UTC
svn commit: r1839885 - in /openjpa/trunk: ./
openjpa-features/src/main/feature/ openjpa-kernel/
openjpa-kernel/src/main/java/org/apache/openjpa/event/ openjpa-project/
Author: ilgrosso
Date: Sun Sep 2 13:59:07 2018
New Revision: 1839885
URL: http://svn.apache.org/viewvc?rev=1839885&view=rev
Log:
[OPENJPA-2744] commons-pool is updated to the most recent version - thanks @solomax - This closes #19
Modified:
openjpa/trunk/openjpa-features/src/main/feature/feature.xml
openjpa/trunk/openjpa-kernel/pom.xml
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/TCPRemoteCommitProvider.java
openjpa/trunk/openjpa-project/assembly.xml
openjpa/trunk/openjpa-project/bin-assembly.xml
openjpa/trunk/pom.xml
Modified: openjpa/trunk/openjpa-features/src/main/feature/feature.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-features/src/main/feature/feature.xml?rev=1839885&r1=1839884&r2=1839885&view=diff
==============================================================================
--- openjpa/trunk/openjpa-features/src/main/feature/feature.xml (original)
+++ openjpa/trunk/openjpa-features/src/main/feature/feature.xml Sun Sep 2 13:59:07 2018
@@ -24,7 +24,7 @@
<bundle dependency="true">mvn:org.eclipse.persistence/javax.persistence/2.1.0</bundle>
<bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-annotation_1.0_spec/1.1.1</bundle>
<bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-el_1.0_spec/1.0.1</bundle>
- <bundle dependency="true">mvn:commons-pool/commons-pool/1.6</bundle>
+ <bundle dependency="true">mvn:org.apache.commons/commons-pool2/2.6.0</bundle>
<bundle dependency="true">mvn:commons-dbcp/commons-dbcp/1.4</bundle>
<bundle dependency="true">mvn:commons-collections/commons-collections/3.2.2</bundle>
<bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.serp/1.14.1_1</bundle>
Modified: openjpa/trunk/openjpa-kernel/pom.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/pom.xml?rev=1839885&r1=1839884&r2=1839885&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/pom.xml (original)
+++ openjpa/trunk/openjpa-kernel/pom.xml Sun Sep 2 13:59:07 2018
@@ -51,8 +51,8 @@
<artifactId>geronimo-jta_1.1_spec</artifactId>
</dependency>
<dependency>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>com.ibm.websphere</groupId>
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/TCPRemoteCommitProvider.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/TCPRemoteCommitProvider.java?rev=1839885&r1=1839884&r2=1839885&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/TCPRemoteCommitProvider.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/TCPRemoteCommitProvider.java Sun Sep 2 13:59:07 2018
@@ -14,7 +14,7 @@
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
+ * under the License.
*/
package org.apache.openjpa.event;
@@ -35,17 +35,21 @@ import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.List;
-import java.util.Collections;
+import java.util.concurrent.locks.ReentrantLock;
-import org.apache.commons.pool.PoolableObjectFactory;
-import org.apache.commons.pool.impl.GenericObjectPool;
+import org.apache.commons.pool2.BasePooledObjectFactory;
+import org.apache.commons.pool2.PooledObject;
+import org.apache.commons.pool2.impl.DefaultPooledObject;
+import org.apache.commons.pool2.impl.GenericObjectPool;
+import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.apache.openjpa.lib.conf.Configurable;
import org.apache.openjpa.lib.log.Log;
import org.apache.openjpa.lib.util.J2DoPrivHelper;
@@ -54,7 +58,6 @@ import org.apache.openjpa.lib.util.Strin
import org.apache.openjpa.util.GeneralException;
import org.apache.openjpa.util.InternalException;
import org.apache.openjpa.util.Serialization;
-import java.util.concurrent.locks.ReentrantLock;
/**
@@ -239,7 +242,7 @@ public class TCPRemoteCommitProvider
tmpPort = DEFAULT_PORT;
}
InetAddress tmpAddress = AccessController
- .doPrivileged(J2DoPrivHelper.getByNameAction(hostname));
+ .doPrivileged(J2DoPrivHelper.getByNameAction(hostname));
// bleair: For each address we would rather make use of
// the jdk1.4 isLinkLocalAddress () || isLoopbackAddress ().
@@ -277,6 +280,7 @@ public class TCPRemoteCommitProvider
* Subclasses that need to perform actions in
* {@link Configurable#endConfiguration} must invoke this method.
*/
+ @Override
public void endConfiguration() {
super.endConfiguration();
synchronized (s_portListenerMap) {
@@ -301,8 +305,9 @@ public class TCPRemoteCommitProvider
("tcp-not-equal", String.valueOf(_port))).
setFatal(true);
}
- } else
+ } else {
throw new InternalException(s_loc.get("tcp-listener-broken"));
+ }
_listener.addProvider(this);
}
@@ -328,6 +333,7 @@ public class TCPRemoteCommitProvider
// 3.4 = 0x1428acff;
private static final long PROTOCOL_VERSION = 0x1428acff;
+ @Override
public void broadcast(RemoteCommitEvent event) {
try {
// build a packet notifying other JVMs of object changes.
@@ -343,13 +349,15 @@ public class TCPRemoteCommitProvider
byte[] bytes = baos.toByteArray();
baos.close();
- if (_broadcastThreads.isEmpty())
+ if (_broadcastThreads.isEmpty()) {
sendUpdatePacket(bytes);
- else
+ } else {
_broadcastQueue.addPacket(bytes);
+ }
} catch (IOException ioe) {
- if (log.isWarnEnabled())
+ if (log.isWarnEnabled()) {
log.warn(s_loc.get("tcp-payload-create-error"), ioe);
+ }
}
}
@@ -360,16 +368,19 @@ public class TCPRemoteCommitProvider
private void sendUpdatePacket(byte[] bytes) {
_addressesLock.lock();
try {
- for (Iterator iter = _addresses.iterator(); iter.hasNext();)
+ for (Iterator iter = _addresses.iterator(); iter.hasNext();) {
((HostAddress) iter.next()).sendUpdatePacket(bytes);
+ }
} finally {
_addressesLock.unlock();
}
}
+ @Override
public void close() {
- if (_listener != null)
+ if (_listener != null) {
_listener.removeProvider(this);
+ }
// Remove Broadcast Threads then close sockets.
_broadcastQueue.close();
@@ -382,11 +393,12 @@ public class TCPRemoteCommitProvider
// Ignore.
}
}
-
+
_addressesLock.lock();
try {
- for (Iterator iter = _addresses.iterator(); iter.hasNext();)
+ for (Iterator iter = _addresses.iterator(); iter.hasNext();) {
((HostAddress) iter.next()).close();
+ }
} finally {
_addressesLock.unlock();
}
@@ -425,12 +437,14 @@ public class TCPRemoteCommitProvider
// only wait if the queue is still open. This allows processing
// of events in the queue to continue, while avoiding sleeping
// during shutdown.
- while (!_closed && _packetQueue.isEmpty())
+ while (!_closed && _packetQueue.isEmpty()) {
wait();
- if (_packetQueue.isEmpty())
+ }
+ if (_packetQueue.isEmpty()) {
return null;
- else
+ } else {
return (byte[]) _packetQueue.removeFirst();
+ }
}
}
@@ -442,16 +456,18 @@ public class TCPRemoteCommitProvider
private boolean _keepRunning = true;
+ @Override
public void run() {
while (_keepRunning) {
try {
// This will block until there is a packet to send, or
// until the queue is closed.
byte[] bytes = _broadcastQueue.removePacket();
- if (bytes != null)
+ if (bytes != null) {
sendUpdatePacket(bytes);
- else if (_broadcastQueue.isClosed())
+ } else if (_broadcastQueue.isClosed()) {
_keepRunning = false;
+ }
} catch (InterruptedException e) {
// End the thread.
break;
@@ -463,7 +479,7 @@ public class TCPRemoteCommitProvider
public void setRunning(boolean keepRunning) {
_keepRunning = keepRunning;
}
-
+
private void remove() {
_broadcastThreads.remove(this);
}
@@ -512,9 +528,10 @@ public class TCPRemoteCommitProvider
}
_localhost = InetAddress.getLocalHost().getAddress();
- if (_log.isTraceEnabled())
+ if (_log.isTraceEnabled()) {
_log.info(s_loc.get("tcp-start-listener",
String.valueOf(_port)));
+ }
}
private void listen() {
@@ -552,8 +569,9 @@ public class TCPRemoteCommitProvider
try {
_receiveSocket.close();
} catch (IOException ioe) {
- if (_log.isWarnEnabled())
+ if (_log.isWarnEnabled()) {
_log.warn(s_loc.get("tcp-close-error"), ioe);
+ }
}
_acceptThread.interrupt();
}
@@ -566,6 +584,7 @@ public class TCPRemoteCommitProvider
}
}
+ @Override
public void run() {
synchronized (_providers) {
_isRunning = true;
@@ -589,20 +608,25 @@ public class TCPRemoteCommitProvider
receiverThread.start();
_receiverThreads.add(receiverThread);
} catch (Exception e) {
- if (e instanceof PrivilegedActionException)
+ if (e instanceof PrivilegedActionException) {
e = ((PrivilegedActionException) e).getException();
- if (!(e instanceof SocketException) || _isRunning)
- if (_log.isWarnEnabled())
+ }
+ if (!(e instanceof SocketException) || _isRunning) {
+ if (_log.isWarnEnabled()) {
_log.warn(s_loc.get("tcp-accept-error"), e);
+ }
+ }
// Nominal case (InterruptedException) because close ()
// calls _acceptThread.interrupt ();
try {
- if (s != null)
+ if (s != null) {
s.close();
+ }
} catch (Exception ee) {
- if (_log.isWarnEnabled())
+ if (_log.isWarnEnabled()) {
_log.warn(s_loc.get("tcp-close-error"), e);
+ }
}
}
}
@@ -621,16 +645,19 @@ public class TCPRemoteCommitProvider
}
synchronized (_providers) {
try {
- if (_isRunning)
+ if (_isRunning) {
_receiveSocket.close();
+ }
} catch (Exception e) {
- if (_log.isWarnEnabled())
+ if (_log.isWarnEnabled()) {
_log.warn(s_loc.get("tcp-close-error"), e);
+ }
}
_isRunning = false;
- if (_log.isTraceEnabled())
+ if (_log.isTraceEnabled()) {
_log.trace(s_loc.get("tcp-close-listener",
_port + ""));
+ }
}
}
@@ -653,19 +680,23 @@ public class TCPRemoteCommitProvider
_s.setTcpNoDelay(true);
_in = new BufferedInputStream(s.getInputStream());
} catch (IOException ioe) {
- if (_log.isInfoEnabled())
+ if (_log.isInfoEnabled()) {
_log.info(s_loc.get("tcp-socket-option-error"), ioe);
+ }
_s = null;
} catch (Exception e) {
- if (_log.isWarnEnabled())
+ if (_log.isWarnEnabled()) {
_log.warn(s_loc.get("tcp-receive-error"), e);
+ }
_s = null;
}
}
+ @Override
public void run() {
- if (_s == null)
+ if (_s == null) {
return;
+ }
while (_isRunning && _s != null) {
try {
// This will block our thread, waiting to read
@@ -681,8 +712,9 @@ public class TCPRemoteCommitProvider
}
break;
} catch (Throwable e) {
- if (_log.isWarnEnabled())
+ if (_log.isWarnEnabled()) {
_log.warn(s_loc.get("tcp-receive-error"), e);
+ }
break;
}
}
@@ -690,8 +722,9 @@ public class TCPRemoteCommitProvider
// thread is terminating.
try {
_in.close();
- if (_s != null)
+ if (_s != null) {
_s.close();
+ }
} catch (IOException e) {
_log.warn(s_loc.get("tcp-close-socket-error",
_s.getInetAddress().getHostAddress() + ":"
@@ -706,7 +739,7 @@ public class TCPRemoteCommitProvider
private void handle(InputStream in)
throws IOException, ClassNotFoundException {
// This will block waiting for the next
- ObjectInputStream ois =
+ ObjectInputStream ois =
new Serialization.ClassResolvingObjectInputStream(in);
long protocolVersion = ois.readLong();
@@ -738,8 +771,9 @@ public class TCPRemoteCommitProvider
for (Iterator iter = _providers.iterator();
iter.hasNext();) {
provider = (TCPRemoteCommitProvider) iter.next();
- if (senderId != provider._id || !fromSelf)
+ if (senderId != provider._id || !fromSelf) {
provider.eventManager.fireEvent(rce);
+ }
}
}
}
@@ -759,7 +793,7 @@ public class TCPRemoteCommitProvider
private boolean _isAvailable; // is peer thought to be up
private int _infosIssued = 0; // limit log entries
- private GenericObjectPool _socketPool; // reusable open sockets
+ private GenericObjectPool<Socket> _socketPool; // reusable open sockets
/**
* Construct a new host address from a string of the form
@@ -782,15 +816,17 @@ public class TCPRemoteCommitProvider
} catch (PrivilegedActionException pae) {
throw (UnknownHostException) pae.getException();
}
+ GenericObjectPoolConfig<Socket> cfg = new GenericObjectPoolConfig<>();
+ cfg.setMaxTotal(_maxActive);
+ cfg.setBlockWhenExhausted(true);
+ cfg.setMaxWaitMillis(-1L);
// -1 max wait == as long as it takes
- _socketPool = new GenericObjectPool
- (new SocketPoolableObjectFactory(), _maxActive,
- GenericObjectPool.WHEN_EXHAUSTED_BLOCK, -1);
+ _socketPool = new GenericObjectPool<>(new SocketPoolableObjectFactory(), cfg);
_isAvailable = true;
}
private void setMaxActive(int maxActive) {
- _socketPool.setMaxActive(maxActive);
+ _socketPool.setMaxTotal(maxActive);
}
private void setMaxIdle(int maxIdle) {
@@ -812,9 +848,10 @@ public class TCPRemoteCommitProvider
private void sendUpdatePacket(byte[] bytes) {
if (!_isAvailable) {
long now = System.currentTimeMillis();
- if (now - _timeLastError < _recoveryTimeMillis)
+ if (now - _timeLastError < _recoveryTimeMillis) {
// Not enough time has passed since the last error
return;
+ }
}
Socket s = null;
try {
@@ -837,8 +874,9 @@ public class TCPRemoteCommitProvider
// There has been a problem sending to the peer.
// The OS socket that was being used is can no longer
// be used.
- if (s != null)
+ if (s != null) {
this.closeSocket(s);
+ }
this.clearAllSockets();
if (_isAvailable) {
@@ -874,7 +912,7 @@ public class TCPRemoteCommitProvider
private Socket getSocket()
throws Exception {
- return (Socket) _socketPool.borrowObject();
+ return _socketPool.borrowObject();
}
private void returnSocket(Socket s)
@@ -899,11 +937,9 @@ public class TCPRemoteCommitProvider
/**
* Factory for pooled sockets.
*/
- private class SocketPoolableObjectFactory
- implements PoolableObjectFactory {
-
- public Object makeObject()
- throws IOException {
+ private class SocketPoolableObjectFactory extends BasePooledObjectFactory<Socket> {
+ @Override
+ public Socket create() throws Exception {
try {
Socket s = AccessController
.doPrivileged(J2DoPrivHelper.newSocketAction(_address,
@@ -918,31 +954,25 @@ public class TCPRemoteCommitProvider
}
}
- public void destroyObject(Object obj) {
- // silentClose ().
+ @Override
+ public PooledObject<Socket> wrap(Socket obj) {
+ return new DefaultPooledObject<>(obj);
+ }
+
+ @Override
+ public void destroyObject(PooledObject<Socket> p) throws Exception {
try {
- Socket s = (Socket) obj;
- if (log.isTraceEnabled())
+ Socket s = p.getObject();
+ if (log.isTraceEnabled()) {
log.trace(s_loc.get("tcp-close-sending-socket",
_address + ":" + _port, "" + s.getLocalPort()));
+ }
s.close();
} catch (Exception e) {
log.warn(s_loc.get("tcp-close-socket-error",
_address.getHostAddress() + ":" + _port), e);
}
}
-
- public boolean validateObject(Object obj) {
- return true;
- }
-
- public void activateObject (Object value)
- {
- }
-
- public void passivateObject (Object value)
- {
- }
- }
- }
+ }
+ }
}
Modified: openjpa/trunk/openjpa-project/assembly.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-project/assembly.xml?rev=1839885&r1=1839884&r2=1839885&view=diff
==============================================================================
--- openjpa/trunk/openjpa-project/assembly.xml (original)
+++ openjpa/trunk/openjpa-project/assembly.xml Sun Sep 2 13:59:07 2018
@@ -135,7 +135,7 @@
<include>commons-lang:commons-lang</include>
<include>commons-collections:commons-collections</include>
- <include>commons-pool:commons-pool</include>
+ <include>org.apache.commons:commons-pool2</include>
<include>commons-logging:commons-logging</include>
<include>commons-dbcp:commons-dbcp</include>
Modified: openjpa/trunk/openjpa-project/bin-assembly.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-project/bin-assembly.xml?rev=1839885&r1=1839884&r2=1839885&view=diff
==============================================================================
--- openjpa/trunk/openjpa-project/bin-assembly.xml (original)
+++ openjpa/trunk/openjpa-project/bin-assembly.xml Sun Sep 2 13:59:07 2018
@@ -74,7 +74,7 @@
<include>commons-lang:commons-lang</include>
<include>commons-collections:commons-collections</include>
- <include>commons-pool:commons-pool</include>
+ <include>org.apache.commons:commons-pool2</include>
<include>commons-logging:commons-logging</include>
<include>commons-dbcp:commons-dbcp</include>
Modified: openjpa/trunk/pom.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/pom.xml?rev=1839885&r1=1839884&r2=1839885&view=diff
==============================================================================
--- openjpa/trunk/pom.xml (original)
+++ openjpa/trunk/pom.xml Sun Sep 2 13:59:07 2018
@@ -498,9 +498,9 @@
<dependencyManagement>
<dependencies>
<dependency>
- <groupId>commons-pool</groupId>
- <artifactId>commons-pool</artifactId>
- <version>1.6</version>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-pool2</artifactId>
+ <version>2.6.0</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>