Skip to content

Commit 6d69770

Browse files
add signature to pass timeout in consumeReport
a debugging session might require more, especially when debugging the utPLSQL framework
1 parent cd16c05 commit 6d69770

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

sqldev/src/main/java/org/utplsql/sqldev/dal/RealtimeReporterDao.java

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,9 @@
1717

1818
import java.io.IOException;
1919
import java.io.StringReader;
20-
import java.sql.CallableStatement;
2120
import java.sql.Clob;
2221
import java.sql.Connection;
2322
import java.sql.ResultSet;
24-
import java.sql.SQLException;
2523
import java.util.List;
2624
import java.util.logging.Logger;
2725

@@ -151,35 +149,37 @@ public void produceReportWithCoverage(final String realtimeReporterId, final Str
151149
}
152150

153151
public void consumeReport(final String reporterId, final RealtimeReporterEventConsumer consumer) {
152+
consumeReport(reporterId, consumer, 60);
153+
}
154+
155+
public void consumeReport(final String reporterId, final RealtimeReporterEventConsumer consumer, final int timeoutSeconds) {
154156
StringBuilder sb = new StringBuilder();
155157
sb.append("DECLARE\n");
156158
sb.append(" l_reporter ut_realtime_reporter := ut_realtime_reporter();\n");
157159
sb.append("BEGIN\n");
158160
sb.append(" l_reporter.set_reporter_id(?);\n");
159-
sb.append(" ? := l_reporter.get_lines_cursor();\n");
161+
sb.append(" ? := l_reporter.get_lines_cursor(a_initial_timeout => ?);\n");
160162
sb.append("END;");
161163
final String plsql = sb.toString();
162164
jdbcTemplate.setFetchSize(1);
163165
try {
164-
jdbcTemplate.execute(plsql, new CallableStatementCallback<Void>() {
165-
@Override
166-
public Void doInCallableStatement(final CallableStatement cs) throws SQLException {
167-
cs.setString(1, reporterId);
168-
cs.registerOutParameter(2, OracleTypes.CURSOR);
169-
cs.execute();
170-
final ResultSet rs = (ResultSet) cs.getObject(2);
171-
while (rs.next()) {
172-
final String itemType = rs.getString("item_type");
173-
final Clob textClob = rs.getClob("text");
174-
final String textString = textClob.getSubString(1, ((int) textClob.length()));
175-
final RealtimeReporterEvent event = convert(itemType, textString);
176-
if (event != null) {
177-
consumer.process(event);
178-
}
166+
jdbcTemplate.execute(plsql, (CallableStatementCallback<Void>) cs -> {
167+
cs.setString(1, reporterId);
168+
cs.setInt(3, timeoutSeconds);
169+
cs.registerOutParameter(2, OracleTypes.CURSOR);
170+
cs.execute();
171+
final ResultSet rs = (ResultSet) cs.getObject(2);
172+
while (rs.next()) {
173+
final String itemType = rs.getString("item_type");
174+
final Clob textClob = rs.getClob("text");
175+
final String textString = textClob.getSubString(1, ((int) textClob.length()));
176+
final RealtimeReporterEvent event = convert(itemType, textString);
177+
if (event != null) {
178+
consumer.process(event);
179179
}
180-
rs.close();
181-
return null;
182180
}
181+
rs.close();
182+
return null;
183183
});
184184
} finally {
185185
jdbcTemplate.setFetchSize(UtplsqlDao.FETCH_ROWS);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy