DataJdbcSource

This commit is contained in:
redkale
2023-10-17 09:26:31 +08:00
parent 8c625e93c7
commit c3928fdc2b
3 changed files with 36 additions and 17 deletions

View File

@@ -364,7 +364,7 @@ public class HttpDispatcherServlet extends DispatcherServlet<String, HttpContext
return; return;
} }
servlet.execute(request, response); servlet.execute(request, response);
} catch (Exception e) { } catch (Throwable e) {
request.getContext().getLogger().log(Level.WARNING, "Dispatch servlet occur exception. request = " + request, e); request.getContext().getLogger().log(Level.WARNING, "Dispatch servlet occur exception. request = " + request, e);
response.finishError(e); response.finishError(e);
} }

View File

@@ -7,6 +7,7 @@ package org.redkale.net.sncp;
import java.io.IOException; import java.io.IOException;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
import java.util.logging.Level;
import org.redkale.net.DispatcherServlet; import org.redkale.net.DispatcherServlet;
import org.redkale.service.Service; import org.redkale.service.Service;
import org.redkale.util.*; import org.redkale.util.*;
@@ -82,6 +83,7 @@ public class SncpDispatcherServlet extends DispatcherServlet<Uint128, SncpContex
@Override @Override
public void execute(SncpRequest request, SncpResponse response) throws IOException { public void execute(SncpRequest request, SncpResponse response) throws IOException {
try {
if (request.isPing()) { if (request.isPing()) {
ByteArray array = localArray.get().clear(); ByteArray array = localArray.get().clear();
int headerSize = SncpHeader.calcHeaderSize(request); int headerSize = SncpHeader.calcHeaderSize(request);
@@ -96,6 +98,10 @@ public class SncpDispatcherServlet extends DispatcherServlet<Uint128, SncpContex
} else { } else {
servlet.execute(request, response); servlet.execute(request, response);
} }
} catch (Throwable e) {
request.getContext().getLogger().log(Level.WARNING, "Dispatch servlet occur exception. request = " + request, e);
response.finishError(e);
}
} }
} }

View File

@@ -3085,6 +3085,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
private <C> void offerConnection(final C connection, Semaphore semaphore, Queue<SourceConnection> queue) { private <C> void offerConnection(final C connection, Semaphore semaphore, Queue<SourceConnection> queue) {
SourceConnection conn = (SourceConnection) connection; SourceConnection conn = (SourceConnection) connection;
if (conn != null) { if (conn != null) {
conn.commiting = false;
try { try {
if (checkValid(conn) && queue.offer(conn)) { if (checkValid(conn) && queue.offer(conn)) {
usingCounter.decrement(); usingCounter.decrement();
@@ -3128,6 +3129,8 @@ public class DataJdbcSource extends AbstractDataSqlSource {
public final Connection conn; public final Connection conn;
boolean commiting;
public SourceConnection(Connection conn, int version) { public SourceConnection(Connection conn, int version) {
Objects.requireNonNull(conn); Objects.requireNonNull(conn);
this.conn = conn; this.conn = conn;
@@ -3214,12 +3217,16 @@ public class DataJdbcSource extends AbstractDataSqlSource {
} }
public void commit() throws SQLException { public void commit() throws SQLException {
commiting = true;
conn.commit(); conn.commit();
} }
public void rollback(Statement stmt) { public void rollback(Statement stmt) {
try { try {
if (commiting) {
conn.rollback(); conn.rollback();
commiting = false;
}
if (stmt != null) { if (stmt != null) {
stmt.close(); stmt.close();
} }
@@ -3230,7 +3237,10 @@ public class DataJdbcSource extends AbstractDataSqlSource {
public void rollback(List<? extends Statement> stmts) { public void rollback(List<? extends Statement> stmts) {
try { try {
if (commiting) {
conn.rollback(); conn.rollback();
commiting = false;
}
if (stmts != null) { if (stmts != null) {
for (Statement s : stmts) { for (Statement s : stmts) {
s.close(); s.close();
@@ -3243,7 +3253,10 @@ public class DataJdbcSource extends AbstractDataSqlSource {
public void rollback(final Statement stmt, List<? extends Statement> stmts) { public void rollback(final Statement stmt, List<? extends Statement> stmts) {
try { try {
if (commiting) {
conn.rollback(); conn.rollback();
commiting = false;
}
if (stmt != null) { if (stmt != null) {
stmt.close(); stmt.close();
} }