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;
}
servlet.execute(request, response);
} catch (Exception e) {
} catch (Throwable e) {
request.getContext().getLogger().log(Level.WARNING, "Dispatch servlet occur exception. request = " + request, e);
response.finishError(e);
}

View File

@@ -7,6 +7,7 @@ package org.redkale.net.sncp;
import java.io.IOException;
import java.util.concurrent.locks.ReentrantLock;
import java.util.logging.Level;
import org.redkale.net.DispatcherServlet;
import org.redkale.service.Service;
import org.redkale.util.*;
@@ -82,19 +83,24 @@ public class SncpDispatcherServlet extends DispatcherServlet<Uint128, SncpContex
@Override
public void execute(SncpRequest request, SncpResponse response) throws IOException {
if (request.isPing()) {
ByteArray array = localArray.get().clear();
int headerSize = SncpHeader.calcHeaderSize(request);
array.putPlaceholder(headerSize);
response.writeHeader(array, 0, 0);
response.finish(array.getBytes());
return;
}
SncpServlet servlet = mappingServlet(request.getHeader().getServiceid());
if (servlet == null) {
response.finish(SncpResponse.RETCODE_ILLSERVICEID, null); //无效serviceid
} else {
servlet.execute(request, response);
try {
if (request.isPing()) {
ByteArray array = localArray.get().clear();
int headerSize = SncpHeader.calcHeaderSize(request);
array.putPlaceholder(headerSize);
response.writeHeader(array, 0, 0);
response.finish(array.getBytes());
return;
}
SncpServlet servlet = mappingServlet(request.getHeader().getServiceid());
if (servlet == null) {
response.finish(SncpResponse.RETCODE_ILLSERVICEID, null); //无效serviceid
} else {
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) {
SourceConnection conn = (SourceConnection) connection;
if (conn != null) {
conn.commiting = false;
try {
if (checkValid(conn) && queue.offer(conn)) {
usingCounter.decrement();
@@ -3128,6 +3129,8 @@ public class DataJdbcSource extends AbstractDataSqlSource {
public final Connection conn;
boolean commiting;
public SourceConnection(Connection conn, int version) {
Objects.requireNonNull(conn);
this.conn = conn;
@@ -3214,12 +3217,16 @@ public class DataJdbcSource extends AbstractDataSqlSource {
}
public void commit() throws SQLException {
commiting = true;
conn.commit();
}
public void rollback(Statement stmt) {
try {
conn.rollback();
if (commiting) {
conn.rollback();
commiting = false;
}
if (stmt != null) {
stmt.close();
}
@@ -3230,7 +3237,10 @@ public class DataJdbcSource extends AbstractDataSqlSource {
public void rollback(List<? extends Statement> stmts) {
try {
conn.rollback();
if (commiting) {
conn.rollback();
commiting = false;
}
if (stmts != null) {
for (Statement s : stmts) {
s.close();
@@ -3243,7 +3253,10 @@ public class DataJdbcSource extends AbstractDataSqlSource {
public void rollback(final Statement stmt, List<? extends Statement> stmts) {
try {
conn.rollback();
if (commiting) {
conn.rollback();
commiting = false;
}
if (stmt != null) {
stmt.close();
}