You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cs...@apache.org on 2015/08/05 18:31:32 UTC
activemq git commit: https://issues.apache.org/jira/browse/AMQ-5919
Repository: activemq
Updated Branches:
refs/heads/master ff9aae69f -> 457dbd8b6
https://issues.apache.org/jira/browse/AMQ-5919
Converting printStackTrace statements to slf4j so that exceptions
are logged properly
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/457dbd8b
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/457dbd8b
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/457dbd8b
Branch: refs/heads/master
Commit: 457dbd8b64a3753dcaa1e3de7f4f2374e8ec624e
Parents: ff9aae6
Author: Christopher L. Shannon (cshannon) <ch...@gmail.com>
Authored: Wed Aug 5 16:23:22 2015 +0000
Committer: Christopher L. Shannon (cshannon) <ch...@gmail.com>
Committed: Wed Aug 5 16:29:29 2015 +0000
----------------------------------------------------------------------
.../activemq/broker/TransportConnection.java | 4 +-
.../activemq/broker/jmx/DestinationView.java | 7 +-
.../transport/discovery/DiscoveryTransport.java | 4 +-
.../store/jdbc/adapter/DefaultJDBCAdapter.java | 77 ++++++++++++++------
.../kahadb/disk/journal/DataFileAccessor.java | 6 +-
.../transport/mqtt/MQTTProtocolConverter.java | 4 +-
.../transport/mqtt/MQTTTransportFilter.java | 2 +-
7 files changed, 70 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq/blob/457dbd8b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
index 6a3d8d9..2727503 100755
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
@@ -715,7 +715,7 @@ public class TransportConnection implements Connection, Task, CommandVisitor {
try {
cs.addSession(info);
} catch (IllegalStateException e) {
- e.printStackTrace();
+ LOG.warn("Failed to add session: {}", info.getSessionId(), e);
broker.removeSession(cs.getContext(), info);
}
}
@@ -1199,7 +1199,7 @@ public class TransportConnection implements Connection, Task, CommandVisitor {
LOG.debug("Cleaning up connection resources: {}", getRemoteAddress());
processRemoveConnection(cs.getInfo().getConnectionId(), RemoveInfo.LAST_DELIVERED_UNKNOWN);
} catch (Throwable ignore) {
- ignore.printStackTrace();
+ LOG.debug("Exception caught removing connection {}. This exception is ignored.", cs.getInfo().getConnectionId(), ignore);
}
}
}
http://git-wip-us.apache.org/repos/asf/activemq/blob/457dbd8b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java
index 3e51a49..1fb7c76 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java
@@ -169,6 +169,7 @@ public class DestinationView implements DestinationViewMBean {
/**
* @return the average size of a message (bytes)
*/
+ @Override
public long getAverageMessageSize() {
// we are okay with the size without decimals so cast to long
return (long) destination.getDestinationStatistics().getMessageSize().getAverageSize();
@@ -177,6 +178,7 @@ public class DestinationView implements DestinationViewMBean {
/**
* @return the max size of a message (bytes)
*/
+ @Override
public long getMaxMessageSize() {
return destination.getDestinationStatistics().getMessageSize().getMaxSize();
}
@@ -184,6 +186,7 @@ public class DestinationView implements DestinationViewMBean {
/**
* @return the min size of a message (bytes)
*/
+ @Override
public long getMinMessageSize() {
return destination.getDestinationStatistics().getMessageSize().getMinSize();
}
@@ -226,10 +229,6 @@ public class DestinationView implements DestinationViewMBean {
}
} catch (Throwable e) {
- // TODO DELETE ME
- System.out.println(e);
- e.printStackTrace();
- // TODO DELETE ME
LOG.warn("exception browsing destination", e);
}
}
http://git-wip-us.apache.org/repos/asf/activemq/blob/457dbd8b/activemq-client/src/main/java/org/apache/activemq/transport/discovery/DiscoveryTransport.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/main/java/org/apache/activemq/transport/discovery/DiscoveryTransport.java b/activemq-client/src/main/java/org/apache/activemq/transport/discovery/DiscoveryTransport.java
index 0efd9eb..a10fb33 100755
--- a/activemq-client/src/main/java/org/apache/activemq/transport/discovery/DiscoveryTransport.java
+++ b/activemq-client/src/main/java/org/apache/activemq/transport/discovery/DiscoveryTransport.java
@@ -114,7 +114,7 @@ public class DiscoveryTransport extends TransportFilter implements DiscoveryList
try {
((Suspendable)discoveryAgent).suspend();
} catch (Exception e) {
- e.printStackTrace();
+ LOG.warn("Exception suspending discoverAgent: ", discoveryAgent);
}
}
super.transportResumed();
@@ -126,7 +126,7 @@ public class DiscoveryTransport extends TransportFilter implements DiscoveryList
try {
((Suspendable)discoveryAgent).resume();
} catch (Exception e) {
- e.printStackTrace();
+ LOG.warn("Exception resuming discoverAgent: ", discoveryAgent);
}
}
super.transportInterupted();
http://git-wip-us.apache.org/repos/asf/activemq/blob/457dbd8b/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/adapter/DefaultJDBCAdapter.java
----------------------------------------------------------------------
diff --git a/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/adapter/DefaultJDBCAdapter.java b/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/adapter/DefaultJDBCAdapter.java
index 9c6f3bf..9530815 100755
--- a/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/adapter/DefaultJDBCAdapter.java
+++ b/activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/adapter/DefaultJDBCAdapter.java
@@ -57,10 +57,10 @@ import static javax.xml.bind.DatatypeConverter.printBase64Binary;
* <ul>
* <li></li>
* </ul>
- *
+ *
* @org.apache.xbean.XBean element="defaultJDBCAdapter"
- *
- *
+ *
+ *
*/
public class DefaultJDBCAdapter implements JDBCAdapter {
private static final Logger LOG = LoggerFactory.getLogger(DefaultJDBCAdapter.class);
@@ -81,6 +81,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
return rs.getBytes(index);
}
+ @Override
public void doCreateTables(TransactionContext c) throws SQLException, IOException {
Statement s = null;
cleanupExclusiveLock.writeLock().lock();
@@ -136,6 +137,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public void doDropTables(TransactionContext c) throws SQLException, IOException {
Statement s = null;
cleanupExclusiveLock.writeLock().lock();
@@ -168,6 +170,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public long doGetLastMessageStoreSequenceId(TransactionContext c) throws SQLException, IOException {
PreparedStatement s = null;
ResultSet rs = null;
@@ -195,7 +198,8 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
close(s);
}
}
-
+
+ @Override
public byte[] doGetMessageById(TransactionContext c, long storeSequenceId) throws SQLException, IOException {
PreparedStatement s = null;
ResultSet rs = null;
@@ -220,6 +224,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
/**
* A non null xid indicated the op is part of 2pc prepare, so ops are flagged pending outcome
*/
+ @Override
public void doAddMessage(TransactionContext c, long sequence, MessageId messageID, ActiveMQDestination destination, byte[] data,
long expiration, byte priority, XATransactionId xid) throws SQLException, IOException {
PreparedStatement s = c.getAddMessageStatement();
@@ -281,6 +286,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
+ @Override
public void doAddMessageReference(TransactionContext c, long sequence, MessageId messageID, ActiveMQDestination destination,
long expirationTime, String messageRef) throws SQLException, IOException {
PreparedStatement s = c.getAddMessageStatement();
@@ -311,6 +317,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public long[] getStoreSequenceId(TransactionContext c, ActiveMQDestination destination, MessageId messageID) throws SQLException, IOException {
PreparedStatement s = null;
ResultSet rs = null;
@@ -332,6 +339,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public byte[] doGetMessage(TransactionContext c, MessageId id) throws SQLException, IOException {
PreparedStatement s = null;
ResultSet rs = null;
@@ -352,6 +360,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public String doGetMessageReference(TransactionContext c, long seq) throws SQLException, IOException {
PreparedStatement s = null;
ResultSet rs = null;
@@ -374,6 +383,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
/**
* A non null xid indicated the op is part of 2pc prepare, so ops are flagged pending outcome
*/
+ @Override
public void doRemoveMessage(TransactionContext c, long seq, XATransactionId xid) throws SQLException, IOException {
PreparedStatement s = c.getRemovedMessageStatement();
cleanupExclusiveLock.readLock().lock();
@@ -407,6 +417,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public void doRecover(TransactionContext c, ActiveMQDestination destination, JDBCMessageRecoveryListener listener)
throws Exception {
PreparedStatement s = null;
@@ -436,7 +447,8 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
- public void doMessageIdScan(TransactionContext c, int limit,
+ @Override
+ public void doMessageIdScan(TransactionContext c, int limit,
JDBCMessageIdScanListener listener) throws SQLException, IOException {
PreparedStatement s = null;
ResultSet rs = null;
@@ -462,7 +474,8 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
close(s);
}
}
-
+
+ @Override
public void doSetLastAckWithPriority(TransactionContext c, ActiveMQDestination destination, XATransactionId xid, String clientId,
String subscriptionName, long seq, long priority) throws SQLException, IOException {
PreparedStatement s = c.getUpdateLastAckStatement();
@@ -501,6 +514,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
+ @Override
public void doSetLastAck(TransactionContext c, ActiveMQDestination destination, XATransactionId xid, String clientId,
String subscriptionName, long seq, long priority) throws SQLException, IOException {
PreparedStatement s = c.getUpdateLastAckStatement();
@@ -535,7 +549,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
cleanupExclusiveLock.readLock().unlock();
if (!this.batchStatements) {
close(s);
- }
+ }
}
}
@@ -568,6 +582,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public void doRecoverSubscription(TransactionContext c, ActiveMQDestination destination, String clientId,
String subscriptionName, JDBCMessageRecoveryListener listener) throws Exception {
// dumpTables(c,
@@ -601,9 +616,10 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public void doRecoverNextMessages(TransactionContext c, ActiveMQDestination destination, String clientId,
String subscriptionName, long seq, long priority, int maxReturned, JDBCMessageRecoveryListener listener) throws Exception {
-
+
PreparedStatement s = null;
ResultSet rs = null;
cleanupExclusiveLock.readLock().lock();
@@ -636,6 +652,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public void doRecoverNextMessagesWithPriority(TransactionContext c, ActiveMQDestination destination, String clientId,
String subscriptionName, long seq, long priority, int maxReturned, JDBCMessageRecoveryListener listener) throws Exception {
@@ -672,6 +689,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public int doGetDurableSubscriberMessageCount(TransactionContext c, ActiveMQDestination destination,
String clientId, String subscriptionName, boolean isPrioritizedMessages) throws SQLException, IOException {
PreparedStatement s = null;
@@ -682,7 +700,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
if (isPrioritizedMessages) {
s = c.getConnection().prepareStatement(this.statements.getDurableSubscriberMessageCountStatementWithPriority());
} else {
- s = c.getConnection().prepareStatement(this.statements.getDurableSubscriberMessageCountStatement());
+ s = c.getConnection().prepareStatement(this.statements.getDurableSubscriberMessageCountStatement());
}
s.setString(1, destination.getQualifiedName());
s.setString(2, clientId);
@@ -700,12 +718,13 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
/**
- * @param c
- * @param info
- * @param retroactive
- * @throws SQLException
- * @throws IOException
+ * @param c
+ * @param info
+ * @param retroactive
+ * @throws SQLException
+ * @throws IOException
*/
+ @Override
public void doSetSubscriberEntry(TransactionContext c, SubscriptionInfo info, boolean retroactive, boolean isPrioritizedMessages)
throws SQLException, IOException {
// dumpTables(c, destination.getQualifiedName(), clientId,
@@ -753,6 +772,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public SubscriptionInfo doGetSubscriberEntry(TransactionContext c, ActiveMQDestination destination,
String clientId, String subscriptionName) throws SQLException, IOException {
PreparedStatement s = null;
@@ -782,6 +802,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public SubscriptionInfo[] doGetAllSubscriptions(TransactionContext c, ActiveMQDestination destination)
throws SQLException, IOException {
PreparedStatement s = null;
@@ -810,6 +831,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public void doRemoveAllMessages(TransactionContext c, ActiveMQDestination destinationName) throws SQLException,
IOException {
PreparedStatement s = null;
@@ -828,6 +850,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public void doDeleteSubscription(TransactionContext c, ActiveMQDestination destination, String clientId,
String subscriptionName) throws SQLException, IOException {
PreparedStatement s = null;
@@ -845,6 +868,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
char priorityIterator = 0; // unsigned
+ @Override
public void doDeleteOldMessages(TransactionContext c) throws SQLException, IOException {
PreparedStatement s = null;
cleanupExclusiveLock.writeLock().lock();
@@ -862,6 +886,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public long doGetLastAckedDurableSubscriberMessageId(TransactionContext c, ActiveMQDestination destination,
String clientId, String subscriberName) throws SQLException, IOException {
PreparedStatement s = null;
@@ -902,6 +927,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public Set<ActiveMQDestination> doGetDestinations(TransactionContext c) throws SQLException, IOException {
HashSet<ActiveMQDestination> rc = new HashSet<ActiveMQDestination>();
PreparedStatement s = null;
@@ -958,6 +984,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
this.batchStatments = batchStatments;
}
+ @Override
public void setUseExternalMessageReferences(boolean useExternalMessageReferences) {
this.statements.setUseExternalMessageReferences(useExternalMessageReferences);
}
@@ -969,10 +996,12 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
return this.statements;
}
+ @Override
public void setStatements(Statements statements) {
this.statements = statements;
}
+ @Override
public int getMaxRows() {
return maxRows;
}
@@ -980,6 +1009,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
/**
* the max value for statement maxRows, used to limit jdbc queries
*/
+ @Override
public void setMaxRows(int maxRows) {
this.maxRows = maxRows;
}
@@ -1066,6 +1096,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
+ @Override
public int doGetMessageCount(TransactionContext c, ActiveMQDestination destination) throws SQLException,
IOException {
PreparedStatement s = null;
@@ -1087,6 +1118,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
return result;
}
+ @Override
public void doRecoverNextMessages(TransactionContext c, ActiveMQDestination destination, long[] lastRecoveredEntries,
long maxSeq, int maxReturned, boolean isPrioritizedMessages, JDBCMessageRecoveryListener listener) throws Exception {
PreparedStatement s = null;
@@ -1131,7 +1163,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
} catch (Exception e) {
- e.printStackTrace();
+ LOG.warn("Exception recovering next messages", e);
} finally {
cleanupExclusiveLock.readLock().unlock();
close(rs);
@@ -1139,6 +1171,7 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
}
+ @Override
public long doGetLastProducerSequenceId(TransactionContext c, ProducerId id)
throws SQLException, IOException {
PreparedStatement s = null;
@@ -1161,13 +1194,13 @@ public class DefaultJDBCAdapter implements JDBCAdapter {
}
public static void dumpTables(Connection c, String destinationName, String clientId, String
- subscriptionName) throws SQLException {
- printQuery(c, "Select * from ACTIVEMQ_MSGS", System.out);
- printQuery(c, "Select * from ACTIVEMQ_ACKS", System.out);
- PreparedStatement s = c.prepareStatement("SELECT M.ID, D.LAST_ACKED_ID FROM "
- + "ACTIVEMQ_MSGS M, " +"ACTIVEMQ_ACKS D "
- + "WHERE D.CONTAINER=? AND D.CLIENT_ID=? AND D.SUB_NAME=?"
- + " AND M.CONTAINER=D.CONTAINER AND M.ID > D.LAST_ACKED_ID"
+ subscriptionName) throws SQLException {
+ printQuery(c, "Select * from ACTIVEMQ_MSGS", System.out);
+ printQuery(c, "Select * from ACTIVEMQ_ACKS", System.out);
+ PreparedStatement s = c.prepareStatement("SELECT M.ID, D.LAST_ACKED_ID FROM "
+ + "ACTIVEMQ_MSGS M, " +"ACTIVEMQ_ACKS D "
+ + "WHERE D.CONTAINER=? AND D.CLIENT_ID=? AND D.SUB_NAME=?"
+ + " AND M.CONTAINER=D.CONTAINER AND M.ID > D.LAST_ACKED_ID"
+ " ORDER BY M.ID");
s.setString(1,destinationName); s.setString(2,clientId); s.setString(3,subscriptionName);
printQuery(s,System.out); }
http://git-wip-us.apache.org/repos/asf/activemq/blob/457dbd8b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/DataFileAccessor.java
----------------------------------------------------------------------
diff --git a/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/DataFileAccessor.java b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/DataFileAccessor.java
index 4832fdc..6a49d06 100644
--- a/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/DataFileAccessor.java
+++ b/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/journal/DataFileAccessor.java
@@ -19,8 +19,11 @@ package org.apache.activemq.store.kahadb.disk.journal;
import java.io.IOException;
import java.util.Map;
+import org.apache.activemq.store.kahadb.AbstractKahaDBStore;
import org.apache.activemq.util.ByteSequence;
import org.apache.activemq.util.RecoverableRandomAccessFile;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Optimized Store reader and updater. Single threaded and synchronous. Use in
@@ -30,6 +33,7 @@ import org.apache.activemq.util.RecoverableRandomAccessFile;
*/
final class DataFileAccessor {
+ private static final Logger LOG = LoggerFactory.getLogger(DataFileAccessor.class);
private final DataFile dataFile;
private final Map<Journal.WriteKey, Journal.WriteCommand> inflightWrites;
private final RecoverableRandomAccessFile file;
@@ -58,7 +62,7 @@ final class DataFileAccessor {
try {
dataFile.closeRandomAccessFile(file);
} catch (IOException e) {
- e.printStackTrace();
+ LOG.warn("Failed to close file", e);
}
}
http://git-wip-us.apache.org/repos/asf/activemq/blob/457dbd8b/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTProtocolConverter.java
----------------------------------------------------------------------
diff --git a/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTProtocolConverter.java b/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTProtocolConverter.java
index 5bd1a32..b83dd27 100644
--- a/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTProtocolConverter.java
+++ b/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTProtocolConverter.java
@@ -160,13 +160,13 @@ public class MQTTProtocolConverter {
try {
handler.onResponse(this, new Response());
} catch (IOException e) {
- e.printStackTrace();
+ LOG.warn("Failed to send command " + command, e);
}
}
return;
}
} catch (IOException e) {
- e.printStackTrace();
+ LOG.warn("Failed to send command " + command, e);
}
}
http://git-wip-us.apache.org/repos/asf/activemq/blob/457dbd8b/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTTransportFilter.java
----------------------------------------------------------------------
diff --git a/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTTransportFilter.java b/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTTransportFilter.java
index f89a6ee..824654f 100644
--- a/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTTransportFilter.java
+++ b/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTTransportFilter.java
@@ -143,7 +143,7 @@ public class MQTTTransportFilter extends TransportFilter implements MQTTTranspor
default: return frame.toString();
}
} catch (Throwable e) {
- e.printStackTrace();
+ LOG.warn(e.getMessage(), e);
return frame.toString();
}
}