Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
51806c13
D
dbeaver
项目概览
suliangchun
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dbeaver
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
51806c13
编写于
5月 11, 2018
作者:
S
serge-rider
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#3415 Invalidate, connect, disconnect timeouts
Former-commit-id:
2c823e61
上级
6a7dd126
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
111 addition
and
69 deletion
+111
-69
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/BaseSQLDialog.java
...e/src/org/jkiss/dbeaver/ui/dialogs/sql/BaseSQLDialog.java
+5
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/content/ContentEditorInput.java
.../jkiss/dbeaver/ui/editors/content/ContentEditorInput.java
+6
-5
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/ModelPreferences.java
...dbeaver.model/src/org/jkiss/dbeaver/ModelPreferences.java
+8
-0
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSource.java
...src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSource.java
+38
-32
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCUtils.java
...odel/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCUtils.java
+30
-23
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/net/HTTPTunnelImpl.java
.../src/org/jkiss/dbeaver/model/impl/net/HTTPTunnelImpl.java
+2
-1
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/net/SSLHandlerImpl.java
.../src/org/jkiss/dbeaver/model/impl/net/SSLHandlerImpl.java
+2
-1
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/net/SocksProxyImpl.java
.../src/org/jkiss/dbeaver/model/impl/net/SocksProxyImpl.java
+2
-1
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/net/DBWNetworkHandler.java
...el/src/org/jkiss/dbeaver/model/net/DBWNetworkHandler.java
+2
-1
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/runtime/jobs/InvalidateJob.java
...del/src/org/jkiss/dbeaver/runtime/jobs/InvalidateJob.java
+1
-2
plugins/org.jkiss.dbeaver.net.ssh/src/org/jkiss/dbeaver/model/net/ssh/SSHTunnelImpl.java
...sh/src/org/jkiss/dbeaver/model/net/ssh/SSHTunnelImpl.java
+15
-2
未找到文件。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/sql/BaseSQLDialog.java
浏览文件 @
51806c13
...
...
@@ -160,7 +160,11 @@ public abstract class BaseSQLDialog extends BaseDialog {
{
try
{
this
.
sqlInput
.
setText
(
getSQLText
());
sqlViewer
.
init
(
subSite
,
sqlInput
);
if
(
sqlViewer
.
getSite
()
!=
null
)
{
sqlViewer
.
setInput
(
sqlInput
);
}
else
{
sqlViewer
.
init
(
subSite
,
sqlInput
);
}
sqlViewer
.
reloadSyntaxRules
();
}
catch
(
PartInitException
e
)
{
DBUserInterface
.
getInstance
().
showError
(
getShell
().
getText
(),
null
,
e
);
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/content/ContentEditorInput.java
浏览文件 @
51806c13
...
...
@@ -22,10 +22,7 @@ import org.eclipse.core.runtime.IPath;
import
org.eclipse.core.runtime.IProgressMonitor
;
import
org.eclipse.core.runtime.Path
;
import
org.eclipse.jface.resource.ImageDescriptor
;
import
org.eclipse.ui.IEditorPart
;
import
org.eclipse.ui.IPathEditorInput
;
import
org.eclipse.ui.IPersistableElement
;
import
org.eclipse.ui.PartInitException
;
import
org.eclipse.ui.*
;
import
org.eclipse.ui.editors.text.IEncodingSupport
;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.DBException
;
...
...
@@ -390,7 +387,11 @@ public class ContentEditorInput implements IPathEditorInput, DBPContextProvider,
this
.
fileCharset
=
fileCharset
;
for
(
IEditorPart
part
:
editorParts
)
{
try
{
part
.
init
(
part
.
getEditorSite
(),
this
);
if
(
part
instanceof
IReusableEditor
)
{
((
IReusableEditor
)
part
).
setInput
(
this
);
}
else
{
part
.
init
(
part
.
getEditorSite
(),
this
);
}
}
catch
(
PartInitException
e
)
{
log
.
error
(
"Error refreshing content editor part "
+
part
,
e
);
}
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/ModelPreferences.java
浏览文件 @
51806c13
...
...
@@ -46,6 +46,10 @@ public final class ModelPreferences
public
static
final
String
EXECUTE_RECOVER_ENABLED
=
"execute.recover.enabled"
;
//$NON-NLS-1$
public
static
final
String
EXECUTE_RECOVER_RETRY_COUNT
=
"execute.recover.retryCount"
;
//$NON-NLS-1$
public
static
final
String
CONNECTION_OPEN_TIMEOUT
=
"connection.open.timeout"
;
//$NON-NLS-1$
public
static
final
String
CONNECTION_VALIDATION_TIMEOUT
=
"connection.validation.timeout"
;
//$NON-NLS-1$
public
static
final
String
CONNECTION_CLOSE_TIMEOUT
=
"connection.close.timeout"
;
//$NON-NLS-1$
public
static
final
String
SCRIPT_STATEMENT_DELIMITER
=
"script.sql.delimiter"
;
//$NON-NLS-1$
public
static
final
String
SCRIPT_IGNORE_NATIVE_DELIMITER
=
"script.sql.ignoreNativeDelimiter"
;
//$NON-NLS-1$
public
static
final
String
SCRIPT_STATEMENT_DELIMITER_BLANK
=
"script.sql.delimiter.blank"
;
//$NON-NLS-1$
...
...
@@ -124,6 +128,10 @@ public final class ModelPreferences
PrefUtils
.
setDefaultPreferenceValue
(
store
,
EXECUTE_RECOVER_ENABLED
,
true
);
PrefUtils
.
setDefaultPreferenceValue
(
store
,
EXECUTE_RECOVER_RETRY_COUNT
,
1
);
PrefUtils
.
setDefaultPreferenceValue
(
store
,
CONNECTION_OPEN_TIMEOUT
,
20000
);
PrefUtils
.
setDefaultPreferenceValue
(
store
,
CONNECTION_VALIDATION_TIMEOUT
,
5000
);
PrefUtils
.
setDefaultPreferenceValue
(
store
,
CONNECTION_CLOSE_TIMEOUT
,
5000
);
// SQL execution
PrefUtils
.
setDefaultPreferenceValue
(
store
,
SCRIPT_STATEMENT_DELIMITER
,
SQLConstants
.
DEFAULT_STATEMENT_DELIMITER
);
PrefUtils
.
setDefaultPreferenceValue
(
store
,
SCRIPT_IGNORE_NATIVE_DELIMITER
,
false
);
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCDataSource.java
浏览文件 @
51806c13
...
...
@@ -37,7 +37,6 @@ import org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCFactoryDefault;
import
org.jkiss.dbeaver.model.messages.ModelMessages
;
import
org.jkiss.dbeaver.model.meta.Property
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress
;
import
org.jkiss.dbeaver.model.sql.SQLDataSource
;
import
org.jkiss.dbeaver.model.sql.SQLDialect
;
import
org.jkiss.dbeaver.model.sql.SQLState
;
...
...
@@ -48,7 +47,6 @@ import org.jkiss.dbeaver.utils.GeneralUtils;
import
org.jkiss.dbeaver.utils.RuntimeUtils
;
import
org.jkiss.utils.CommonUtils
;
import
java.lang.reflect.InvocationTargetException
;
import
java.net.SocketException
;
import
java.sql.*
;
import
java.util.ArrayList
;
...
...
@@ -74,8 +72,6 @@ public abstract class JDBCDataSource
{
private
static
final
Log
log
=
Log
.
getLog
(
JDBCDataSource
.
class
);
public
static
final
int
DISCONNECT_TIMEOUT
=
5000
;
@NotNull
private
final
DBPDataSourceContainer
container
;
@NotNull
...
...
@@ -143,22 +139,34 @@ public abstract class JDBCDataSource
}
}
monitor
.
subTask
(
"Connecting "
+
purpose
);
Connection
connection
;
if
(
driverInstance
==
null
)
{
connection
=
DriverManager
.
getConnection
(
url
,
connectProps
);
}
else
{
connection
=
driverInstance
.
connect
(
url
,
connectProps
);
Connection
[]
connection
=
new
Connection
[
1
];
Exception
[]
error
=
new
Exception
[
1
];
int
openTimeout
=
getContainer
().
getPreferenceStore
().
getInt
(
ModelPreferences
.
CONNECTION_OPEN_TIMEOUT
);
RuntimeUtils
.
runTask
(
monitor1
->
{
try
{
if
(
driverInstance
==
null
)
{
connection
[
0
]
=
DriverManager
.
getConnection
(
url
,
connectProps
);
}
else
{
connection
[
0
]
=
driverInstance
.
connect
(
url
,
connectProps
);
}
}
catch
(
Exception
e
)
{
error
[
0
]
=
e
;
}
},
"Check connection is alive"
,
openTimeout
+
2000
);
if
(
error
[
0
]
!=
null
)
{
throw
error
[
0
];
}
if
(
connection
==
null
)
{
if
(
connection
[
0
]
==
null
)
{
throw
new
DBCException
(
"Null connection returned"
);
}
// Set read-only flag
if
(
container
.
isConnectionReadOnly
()
&&
!
isConnectionReadOnlyBroken
())
{
connection
.
setReadOnly
(
true
);
connection
[
0
]
.
setReadOnly
(
true
);
}
return
connection
;
return
connection
[
0
]
;
}
catch
(
SQLException
ex
)
{
throw
new
DBCConnectException
(
ex
.
getMessage
(),
ex
,
this
);
...
...
@@ -216,28 +224,26 @@ public abstract class JDBCDataSource
{
if
(
connection
!=
null
)
{
// Close datasource (in async task)
RuntimeUtils
.
runTask
(
new
DBRRunnableWithProgress
()
{
@Override
public
void
run
(
DBRProgressMonitor
monitor
)
throws
InvocationTargetException
,
InterruptedException
{
try
{
// If we in transaction - rollback it.
// Any valuable transaction changes should be committed by UI
// so here we do it just in case to avoid error messages on close with open transaction
if
(!
connection
.
getAutoCommit
())
{
connection
.
rollback
();
}
}
catch
(
Throwable
e
)
{
// Do not write warning because connection maybe broken before the moment of close
log
.
debug
(
"Error closing transaction"
,
e
);
}
try
{
connection
.
close
();
}
catch
(
Throwable
ex
)
{
log
.
error
(
"Error closing connection"
,
ex
);
RuntimeUtils
.
runTask
(
monitor
->
{
try
{
// If we in transaction - rollback it.
// Any valuable transaction changes should be committed by UI
// so here we do it just in case to avoid error messages on close with open transaction
if
(!
connection
.
getAutoCommit
())
{
connection
.
rollback
();
}
}
catch
(
Throwable
e
)
{
// Do not write warning because connection maybe broken before the moment of close
log
.
debug
(
"Error closing transaction"
,
e
);
}
try
{
connection
.
close
();
}
catch
(
Throwable
ex
)
{
log
.
error
(
"Error closing connection"
,
ex
);
}
},
"Close JDBC connection ("
+
purpose
+
")"
,
DISCONNECT_TIMEOUT
);
},
"Close JDBC connection ("
+
purpose
+
")"
,
getContainer
().
getPreferenceStore
().
getInt
(
ModelPreferences
.
CONNECTION_CLOSE_TIMEOUT
));
}
}
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/JDBCUtils.java
浏览文件 @
51806c13
...
...
@@ -20,6 +20,7 @@ import org.jkiss.code.NotNull;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.ModelPreferences
;
import
org.jkiss.dbeaver.model.DBPDataKind
;
import
org.jkiss.dbeaver.model.DBPDataSource
;
import
org.jkiss.dbeaver.model.DBPDataTypeProvider
;
...
...
@@ -36,6 +37,7 @@ import org.jkiss.dbeaver.model.sql.SQLDataSource;
import
org.jkiss.dbeaver.model.sql.SQLUtils
;
import
org.jkiss.dbeaver.model.struct.DBSObjectFilter
;
import
org.jkiss.dbeaver.model.struct.rdb.DBSForeignKeyModifyRule
;
import
org.jkiss.dbeaver.utils.RuntimeUtils
;
import
org.jkiss.utils.CommonUtils
;
import
java.lang.reflect.InvocationTargetException
;
...
...
@@ -50,7 +52,6 @@ import java.util.Map;
*/
public
class
JDBCUtils
{
private
static
final
Log
log
=
Log
.
getLog
(
JDBCUtils
.
class
);
public
static
final
int
CONNECTION_VALIDATION_TIMEOUT
=
5000
;
private
static
final
Map
<
String
,
Integer
>
badColumnNames
=
new
HashMap
<>();
...
...
@@ -479,30 +480,36 @@ public class JDBCUtils {
log
.
debug
(
e
);
return
false
;
}
String
testSQL
=
null
;
if
(
dataSource
instanceof
SQLDataSource
)
{
testSQL
=
((
SQLDataSource
)
dataSource
).
getSQLDialect
().
getTestSQL
();
}
try
{
if
(!
CommonUtils
.
isEmpty
(
testSQL
))
{
// Execute test SQL
try
(
Statement
dbStat
=
connection
.
createStatement
())
{
dbStat
.
execute
(
testSQL
);
}
}
else
{
try
{
return
connection
.
isValid
(
CONNECTION_VALIDATION_TIMEOUT
);
}
catch
(
Throwable
e
)
{
// isValid may be unsupported by driver
// Let's try to read table list
connection
.
getMetaData
().
getTables
(
null
,
null
,
"DBEAVER_FAKE_TABLE_NAME_FOR_PING"
,
null
);
final
String
testSQL
=
(
dataSource
instanceof
SQLDataSource
)
?
((
SQLDataSource
)
dataSource
).
getSQLDialect
().
getTestSQL
()
:
null
;
int
invalidateTimeout
=
dataSource
.
getContainer
().
getPreferenceStore
().
getInt
(
ModelPreferences
.
CONNECTION_VALIDATION_TIMEOUT
);
// Invalidate in non-blocking task.
// Timeout is CONNECTION_VALIDATION_TIMEOUT + 2 seconds
final
boolean
[]
isValid
=
new
boolean
[
1
];
RuntimeUtils
.
runTask
(
monitor
->
{
try
{
if
(!
CommonUtils
.
isEmpty
(
testSQL
))
{
// Execute test SQL
try
(
Statement
dbStat
=
connection
.
createStatement
())
{
dbStat
.
execute
(
testSQL
);
isValid
[
0
]
=
true
;
}
}
else
{
try
{
isValid
[
0
]
=
connection
.
isValid
(
invalidateTimeout
);
}
catch
(
Throwable
e
)
{
// isValid may be unsupported by driver
// Let's try to read table list
connection
.
getMetaData
().
getTables
(
null
,
null
,
"DBEAVER_FAKE_TABLE_NAME_FOR_PING"
,
null
);
isValid
[
0
]
=
true
;
}
}
}
catch
(
SQLException
e
)
{
isValid
[
0
]
=
false
;
}
return
true
;
}
catch
(
Throwable
e1
)
{
log
.
debug
(
"Connection seems to be broken"
,
e1
);
return
false
;
}
},
"Check connection is alive"
,
invalidateTimeout
+
2000
);
return
isValid
[
0
];
}
public
static
void
scrollResultSet
(
ResultSet
dbResult
,
long
offset
,
boolean
forceFetch
)
throws
SQLException
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/net/HTTPTunnelImpl.java
浏览文件 @
51806c13
...
...
@@ -17,6 +17,7 @@
package
org.jkiss.dbeaver.model.impl.net
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.model.DBPDataSource
;
import
org.jkiss.dbeaver.model.app.DBPPlatform
;
import
org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration
;
import
org.jkiss.dbeaver.model.net.DBWHandlerConfiguration
;
...
...
@@ -48,7 +49,7 @@ public class HTTPTunnelImpl implements DBWTunnel {
}
@Override
public
void
invalidateHandler
(
DBRProgressMonitor
monitor
)
throws
DBException
,
IOException
{
public
void
invalidateHandler
(
DBRProgressMonitor
monitor
,
DBPDataSource
dataSource
)
throws
DBException
,
IOException
{
}
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/net/SSLHandlerImpl.java
浏览文件 @
51806c13
...
...
@@ -17,6 +17,7 @@
package
org.jkiss.dbeaver.model.impl.net
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.model.DBPDataSource
;
import
org.jkiss.dbeaver.model.net.DBWConfigProvider
;
import
org.jkiss.dbeaver.model.net.DBWNetworkHandler
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
...
...
@@ -28,7 +29,7 @@ import java.io.IOException;
*/
public
class
SSLHandlerImpl
implements
DBWNetworkHandler
,
DBWConfigProvider
{
@Override
public
void
invalidateHandler
(
DBRProgressMonitor
monitor
)
throws
DBException
,
IOException
{
public
void
invalidateHandler
(
DBRProgressMonitor
monitor
,
DBPDataSource
dataSource
)
throws
DBException
,
IOException
{
}
}
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/net/SocksProxyImpl.java
浏览文件 @
51806c13
...
...
@@ -17,6 +17,7 @@
package
org.jkiss.dbeaver.model.impl.net
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.model.DBPDataSource
;
import
org.jkiss.dbeaver.model.net.DBWNetworkHandler
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
...
...
@@ -29,7 +30,7 @@ public class SocksProxyImpl implements DBWNetworkHandler {
@Override
public
void
invalidateHandler
(
DBRProgressMonitor
monitor
)
throws
DBException
,
IOException
{
public
void
invalidateHandler
(
DBRProgressMonitor
monitor
,
DBPDataSource
dataSource
)
throws
DBException
,
IOException
{
}
}
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/net/DBWNetworkHandler.java
浏览文件 @
51806c13
...
...
@@ -17,6 +17,7 @@
package
org.jkiss.dbeaver.model.net
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.model.DBPDataSource
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
java.io.IOException
;
...
...
@@ -26,7 +27,7 @@ import java.io.IOException;
*/
public
interface
DBWNetworkHandler
{
void
invalidateHandler
(
DBRProgressMonitor
monitor
)
void
invalidateHandler
(
DBRProgressMonitor
monitor
,
DBPDataSource
dataSource
)
throws
DBException
,
IOException
;
}
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/runtime/jobs/InvalidateJob.java
浏览文件 @
51806c13
...
...
@@ -27,7 +27,6 @@ import org.jkiss.dbeaver.model.net.DBWNetworkHandler;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.runtime.DBeaverNotifications
;
import
org.jkiss.dbeaver.runtime.ui.DBUserInterface
;
import
org.jkiss.dbeaver.utils.RuntimeUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -96,7 +95,7 @@ public class InvalidateJob extends DataSourceJob
for
(
DBWNetworkHandler
nh
:
activeHandlers
)
{
monitor
.
subTask
(
"Invalidate network ["
+
container
.
getName
()
+
"]"
);
try
{
nh
.
invalidateHandler
(
monitor
);
nh
.
invalidateHandler
(
monitor
,
dataSource
);
}
catch
(
Exception
e
)
{
invalidateResults
.
add
(
new
ContextInvalidateResult
(
DBCExecutionContext
.
InvalidateResult
.
ERROR
,
e
));
networkOK
=
false
;
...
...
plugins/org.jkiss.dbeaver.net.ssh/src/org/jkiss/dbeaver/model/net/ssh/SSHTunnelImpl.java
浏览文件 @
51806c13
...
...
@@ -17,6 +17,9 @@
package
org.jkiss.dbeaver.model.net.ssh
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.ModelPreferences
;
import
org.jkiss.dbeaver.model.DBPDataSource
;
import
org.jkiss.dbeaver.model.app.DBPPlatform
;
import
org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration
;
import
org.jkiss.dbeaver.model.net.DBWHandlerConfiguration
;
...
...
@@ -24,6 +27,7 @@ import org.jkiss.dbeaver.model.net.DBWTunnel;
import
org.jkiss.dbeaver.model.net.ssh.registry.SSHImplementationDescriptor
;
import
org.jkiss.dbeaver.model.net.ssh.registry.SSHImplementationRegistry
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.utils.RuntimeUtils
;
import
org.jkiss.utils.CommonUtils
;
import
java.io.IOException
;
...
...
@@ -34,6 +38,7 @@ import java.util.Map;
*/
public
class
SSHTunnelImpl
implements
DBWTunnel
{
private
static
final
Log
log
=
Log
.
getLog
(
SSHTunnelImpl
.
class
);
private
static
final
String
DEF_IMPLEMENTATION
=
"jsch"
;
private
SSHImplementation
implementation
;
...
...
@@ -97,9 +102,17 @@ public class SSHTunnelImpl implements DBWTunnel {
}
@Override
public
void
invalidateHandler
(
DBRProgressMonitor
monitor
)
throws
DBException
,
IOException
{
public
void
invalidateHandler
(
DBRProgressMonitor
monitor
,
DBPDataSource
dataSource
)
throws
DBException
,
IOException
{
if
(
implementation
!=
null
)
{
implementation
.
invalidateTunnel
(
monitor
);
RuntimeUtils
.
runTask
(
monitor1
->
{
try
{
implementation
.
invalidateTunnel
(
monitor1
);
}
catch
(
Exception
e
)
{
log
.
error
(
"Error invalidating SSH tunnel"
,
e
);
}
},
"Check connection is alive"
,
dataSource
.
getContainer
().
getPreferenceStore
().
getInt
(
ModelPreferences
.
CONNECTION_VALIDATION_TIMEOUT
));
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录