Skip to content

Commit 52e2ee4

Browse files
committed
dbeaver/pro#5630 add soft reference
1 parent 93972f8 commit 52e2ee4

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLContextInfo.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import org.jkiss.dbeaver.utils.RuntimeUtils;
5151
import org.jkiss.utils.CommonUtils;
5252

53+
import java.lang.ref.SoftReference;
5354
import java.lang.reflect.InvocationTargetException;
5455
import java.time.Instant;
5556
import java.time.ZoneId;
@@ -72,7 +73,7 @@ public class WebSQLContextInfo implements WebSessionProvider {
7273
private final String id;
7374
private final String projectId;
7475
private final Map<String, WebSQLResultsInfo> resultInfoMap = new HashMap<>();
75-
private final Map<String, WebSQLQueryResults> queryResultsMap = new HashMap<>();
76+
private final Map<String, SoftReference<WebSQLQueryResults>> queryResultsMap = new HashMap<>();
7677

7778
private final AtomicInteger resultId = new AtomicInteger();
7879

@@ -195,15 +196,16 @@ public WebSQLResultsInfo getResults(@NotNull String resultId) throws DBWebExcept
195196

196197
@Nullable
197198
public WebSQLQueryResults getQueryResults(@NotNull String resultId) throws DBWebException {
198-
return queryResultsMap.get(resultId);
199+
SoftReference<WebSQLQueryResults> reference = queryResultsMap.get(resultId);
200+
return reference == null ? null : reference.get();
199201
}
200202

201203
public void trySaveQueryResults(@NotNull WebSQLQueryResults[] resultsArray, int requestedLimit) {
202204

203205
boolean isSingleResult = resultsArray.length == 1;
204206
int actualRowCount = isSingleResult ? resultsArray[0].getResultSet().getRows().length : 0;
205207
if (isSingleResult && actualRowCount < Math.min(requestedLimit, MAX_RESULT_SET_SIZE)) {
206-
queryResultsMap.put(resultsArray[0].getResultSet().getId(), resultsArray[0]);
208+
queryResultsMap.put(resultsArray[0].getResultSet().getId(), new SoftReference<>(resultsArray[0]));
207209
}
208210
}
209211

0 commit comments

Comments
 (0)