Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-WIC-Cnf
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
3
Issues
3
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
CommunityXG
OpenXG-WIC-Cnf
Commits
a8028b50
Commit
a8028b50
authored
Dec 01, 2019
by
wutu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复完成多点版本的bug
parent
3b84df6c
Changes
16
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
262 additions
and
11 deletions
+262
-11
bishe-client-starter/src/main/java/top/ninwoo/bishe/starter/service/ClusterService.java
...java/top/ninwoo/bishe/starter/service/ClusterService.java
+2
-0
bishe-client-starter/src/main/java/top/ninwoo/bishe/starter/service/ClusterServiceImpl.java
.../top/ninwoo/bishe/starter/service/ClusterServiceImpl.java
+8
-0
bishe-cloud-center/src/main/java/top/ninwoo/cloudcenter/controller/ClusterController.java
.../top/ninwoo/cloudcenter/controller/ClusterController.java
+5
-0
bishe-cloud-center/src/main/java/top/ninwoo/cloudcenter/register/CloudRegisterCenter.java
.../top/ninwoo/cloudcenter/register/CloudRegisterCenter.java
+6
-0
bishe-cloud-center/src/main/java/top/ninwoo/cloudcenter/service/CloudService.java
...ain/java/top/ninwoo/cloudcenter/service/CloudService.java
+3
-0
bishe-cloud-center/src/main/java/top/ninwoo/cloudcenter/service/impl/CloudServiceImpl.java
...top/ninwoo/cloudcenter/service/impl/CloudServiceImpl.java
+9
-0
bishe-edge-center/pom.xml
bishe-edge-center/pom.xml
+6
-0
bishe-edge-center/src/main/java/top/ninwoo/edgecenter/controller/EdgeController.java
...java/top/ninwoo/edgecenter/controller/EdgeController.java
+10
-6
bishe-edge-center/src/main/java/top/ninwoo/edgecenter/controller/IndexController.java
...ava/top/ninwoo/edgecenter/controller/IndexController.java
+1
-1
bishe-edge-center/src/main/java/top/ninwoo/edgecenter/register/EdgeNodeRegister.java
...java/top/ninwoo/edgecenter/register/EdgeNodeRegister.java
+5
-0
bishe-edge-center/src/main/java/top/ninwoo/edgecenter/register/Register.java
...rc/main/java/top/ninwoo/edgecenter/register/Register.java
+2
-0
bishe-edge-center/src/main/java/top/ninwoo/edgecenter/service/EdgeService.java
.../main/java/top/ninwoo/edgecenter/service/EdgeService.java
+7
-0
bishe-edge-center/src/main/java/top/ninwoo/edgecenter/service/impl/EdgeServiceImpl.java
...a/top/ninwoo/edgecenter/service/impl/EdgeServiceImpl.java
+33
-0
bishe-edge-center/src/main/resources/application.yaml
bishe-edge-center/src/main/resources/application.yaml
+3
-3
bishe-test/src/test/java/top/ninwoo/BisheMultiNodeTests.java
bishe-test/src/test/java/top/ninwoo/BisheMultiNodeTests.java
+160
-0
bishe-utils/src/main/java/top/ninwoo/utils/util/impl/OvsUtilsImpl.java
...rc/main/java/top/ninwoo/utils/util/impl/OvsUtilsImpl.java
+2
-1
No files found.
bishe-client-starter/src/main/java/top/ninwoo/bishe/starter/service/ClusterService.java
View file @
a8028b50
...
@@ -12,4 +12,6 @@ public interface ClusterService {
...
@@ -12,4 +12,6 @@ public interface ClusterService {
List
<
SeparatedClusterConfig
>
sendClusterConfigToEdgeNode
(
List
<
SeparatedClusterConfig
>
configs
);
List
<
SeparatedClusterConfig
>
sendClusterConfigToEdgeNode
(
List
<
SeparatedClusterConfig
>
configs
);
String
removeClusterFromEdgeNode
(
Long
clusterId
);
String
removeClusterFromEdgeNode
(
Long
clusterId
);
List
<
String
>
getAllEdgeNodeIds
();
}
}
bishe-client-starter/src/main/java/top/ninwoo/bishe/starter/service/ClusterServiceImpl.java
View file @
a8028b50
...
@@ -19,6 +19,8 @@ public class ClusterServiceImpl implements ClusterService {
...
@@ -19,6 +19,8 @@ public class ClusterServiceImpl implements ClusterService {
=
"/cluster/sendClusterConfigToEdgeNode"
;
=
"/cluster/sendClusterConfigToEdgeNode"
;
private
final
static
String
REMOVE_CLUSTER_FROM_EDGE_NODE
private
final
static
String
REMOVE_CLUSTER_FROM_EDGE_NODE
=
"/cluster/removeClusterFromEdgeNode?clusterId="
;
=
"/cluster/removeClusterFromEdgeNode?clusterId="
;
private
final
static
String
GET_ALL_EDGE_NODE_IDS
=
"/cluster/getEdgeNodeIds"
;
@Resource
@Resource
private
RestTemplate
restTemplate
;
private
RestTemplate
restTemplate
;
...
@@ -42,4 +44,10 @@ public class ClusterServiceImpl implements ClusterService {
...
@@ -42,4 +44,10 @@ public class ClusterServiceImpl implements ClusterService {
return
restTemplate
.
getForObject
(
"http://"
+
clientProperties
.
getCloudUrl
()
+
return
restTemplate
.
getForObject
(
"http://"
+
clientProperties
.
getCloudUrl
()
+
REMOVE_CLUSTER_FROM_EDGE_NODE
+
clusterId
,
String
.
class
);
REMOVE_CLUSTER_FROM_EDGE_NODE
+
clusterId
,
String
.
class
);
}
}
@Override
public
List
<
String
>
getAllEdgeNodeIds
()
{
return
restTemplate
.
getForObject
(
"http://"
+
clientProperties
.
getCloudUrl
()
+
GET_ALL_EDGE_NODE_IDS
,
List
.
class
);
}
}
}
bishe-cloud-center/src/main/java/top/ninwoo/cloudcenter/controller/ClusterController.java
View file @
a8028b50
...
@@ -28,4 +28,9 @@ public class ClusterController {
...
@@ -28,4 +28,9 @@ public class ClusterController {
}
}
return
"fail"
;
return
"fail"
;
}
}
@RequestMapping
(
value
=
"/getEdgeNodeIds"
)
public
List
<
String
>
getEdgeNodeIds
()
{
return
cloudService
.
getEdgeNodeIds
();
}
}
}
bishe-cloud-center/src/main/java/top/ninwoo/cloudcenter/register/CloudRegisterCenter.java
View file @
a8028b50
...
@@ -116,7 +116,13 @@ public class CloudRegisterCenter implements Register {
...
@@ -116,7 +116,13 @@ public class CloudRegisterCenter implements Register {
}
}
}
}
else
if
(
event
.
getType
()
==
PathChildrenCacheEvent
.
Type
.
CHILD_REMOVED
)
{
else
if
(
event
.
getType
()
==
PathChildrenCacheEvent
.
Type
.
CHILD_REMOVED
)
{
String
removeNodeId
=
new
String
(
event
.
getData
().
getData
());
LOG
.
info
(
"节点{}已离线"
,
event
.
getData
().
getPath
());
LOG
.
info
(
"节点{}已离线"
,
event
.
getData
().
getPath
());
// 从列表中移除节点
if
(
availableEdgeNodes
.
containsKey
(
removeNodeId
))
{
LOG
.
info
(
"从云中心节点删除注册的边缘节点{}"
,
removeNodeId
);
availableEdgeNodes
.
remove
(
removeNodeId
);
}
}
}
});
});
try
{
try
{
...
...
bishe-cloud-center/src/main/java/top/ninwoo/cloudcenter/service/CloudService.java
View file @
a8028b50
...
@@ -29,4 +29,7 @@ public interface CloudService {
...
@@ -29,4 +29,7 @@ public interface CloudService {
List
<
ContainerMonitorInfo
>
getContainerMonitorInfoByAppName
(
Long
clusterId
,
String
appName
);
List
<
ContainerMonitorInfo
>
getContainerMonitorInfoByAppName
(
Long
clusterId
,
String
appName
);
String
cancelNetworkMonitor
(
Long
clusterId
,
String
appName
);
String
cancelNetworkMonitor
(
Long
clusterId
,
String
appName
);
List
<
String
>
getEdgeNodeIds
();
}
}
bishe-cloud-center/src/main/java/top/ninwoo/cloudcenter/service/impl/CloudServiceImpl.java
View file @
a8028b50
...
@@ -539,4 +539,13 @@ public class CloudServiceImpl implements CloudService {
...
@@ -539,4 +539,13 @@ public class CloudServiceImpl implements CloudService {
});
});
return
containerMonitorInfos
;
return
containerMonitorInfos
;
}
}
/**
* 获取全部的边缘节点地址
* @return
*/
@Override
public
List
<
String
>
getEdgeNodeIds
()
{
return
cloudRegisterCenter
.
getAvailableEdgeNodes
();
}
}
}
bishe-edge-center/pom.xml
View file @
a8028b50
...
@@ -86,6 +86,12 @@
...
@@ -86,6 +86,12 @@
<version>
2.12.0
</version>
<version>
2.12.0
</version>
</dependency>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-actuator
</artifactId>
<version>
2.1.2.RELEASE
</version>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
bishe-edge-center/src/main/java/top/ninwoo/edgecenter/controller/EdgeController.java
View file @
a8028b50
package
top.ninwoo.edgecenter.controller
;
package
top.ninwoo.edgecenter.controller
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
top.ninwoo.common.EdgeNodeEntity
;
import
top.ninwoo.common.EdgeNodeEntity
;
import
top.ninwoo.edgecenter.service.EdgeService
;
import
top.ninwoo.utils.util.impl.IpUtils
;
import
javax.annotation.Resource
;
@RestController
@RestController
@RequestMapping
(
"/edgeNode"
)
@RequestMapping
(
"/edgeNode"
)
public
class
EdgeController
{
public
class
EdgeController
{
@Resource
private
EdgeService
edgeService
;
/**
/**
* 获取边缘节点的信息
* 获取边缘节点的信息
* @return
* @return
*/
*/
@RequestMapping
(
"/info"
)
@RequestMapping
(
"/info"
)
public
EdgeNodeEntity
info
()
{
public
EdgeNodeEntity
info
()
{
// TODO: 需要添加真实的功能
return
edgeService
.
info
();
EdgeNodeEntity
edgeNodeEntity
=
new
EdgeNodeEntity
();
edgeNodeEntity
.
setId
(
11111
);
edgeNodeEntity
.
setName
(
"test"
);
edgeNodeEntity
.
setUrl
(
"http://www.baidu.com"
);
return
edgeNodeEntity
;
}
}
}
}
bishe-edge-center/src/main/java/top/ninwoo/edgecenter/controller/IndexController.java
View file @
a8028b50
...
@@ -85,7 +85,7 @@ public class IndexController {
...
@@ -85,7 +85,7 @@ public class IndexController {
return
false
;
return
false
;
}
}
cids
.
forEach
(
cid
->
{
cids
.
forEach
(
cid
->
{
// 为每一个cid容器创建一个定时任务
TODO 应该加一个判断,防止重复提交
// 为每一个cid容器创建一个定时任务
if
(!
scheduledFutureMap
.
containsKey
(
cid
))
{
if
(!
scheduledFutureMap
.
containsKey
(
cid
))
{
containerInfoMap
.
put
(
cid
,
new
ContainerInfo
());
containerInfoMap
.
put
(
cid
,
new
ContainerInfo
());
NetworkMonitorThread
networkMonitorThread
=
new
NetworkMonitorThread
(
cid
,
containerInfoMap
,
clusterService
);
NetworkMonitorThread
networkMonitorThread
=
new
NetworkMonitorThread
(
cid
,
containerInfoMap
,
clusterService
);
...
...
bishe-edge-center/src/main/java/top/ninwoo/edgecenter/register/EdgeNodeRegister.java
View file @
a8028b50
...
@@ -61,4 +61,9 @@ public class EdgeNodeRegister implements Register {
...
@@ -61,4 +61,9 @@ public class EdgeNodeRegister implements Register {
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
}
}
@Override
public
String
getEdgeNodeName
()
{
return
edgeNodeId
;
}
}
}
bishe-edge-center/src/main/java/top/ninwoo/edgecenter/register/Register.java
View file @
a8028b50
...
@@ -4,4 +4,6 @@ public interface Register {
...
@@ -4,4 +4,6 @@ public interface Register {
void
registerNode
();
void
registerNode
();
void
registerNode
(
String
nodeId
);
void
registerNode
(
String
nodeId
);
String
getEdgeNodeName
();
}
}
bishe-edge-center/src/main/java/top/ninwoo/edgecenter/service/EdgeService.java
0 → 100644
View file @
a8028b50
package
top.ninwoo.edgecenter.service
;
import
top.ninwoo.common.EdgeNodeEntity
;
public
interface
EdgeService
{
EdgeNodeEntity
info
();
}
bishe-edge-center/src/main/java/top/ninwoo/edgecenter/service/impl/EdgeServiceImpl.java
0 → 100644
View file @
a8028b50
package
top.ninwoo.edgecenter.service.impl
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
top.ninwoo.common.EdgeNodeEntity
;
import
top.ninwoo.edgecenter.register.Register
;
import
top.ninwoo.edgecenter.service.EdgeService
;
import
top.ninwoo.utils.util.impl.IpUtils
;
@Service
public
class
EdgeServiceImpl
implements
EdgeService
{
@Value
(
"${bs.edgenode.name}"
)
private
String
edgeNodeName
;
@Value
(
"${server.port}"
)
private
int
port
;
@Value
(
"${bs.edgenode.ip-prefix}"
)
private
String
ipPrefix
;
@Override
public
EdgeNodeEntity
info
()
{
// TODO: 需要添加真实的功能
EdgeNodeEntity
edgeNodeEntity
=
new
EdgeNodeEntity
();
// TODO: 这里的id考虑是否
edgeNodeEntity
.
setId
(
11111
);
edgeNodeEntity
.
setName
(
edgeNodeName
);
edgeNodeEntity
.
setUrl
(
"http://"
+
IpUtils
.
getHostIp
(
ipPrefix
)
+
":"
+
port
);
return
edgeNodeEntity
;
}
}
bishe-edge-center/src/main/resources/application.yaml
View file @
a8028b50
...
@@ -2,9 +2,9 @@ spring:
...
@@ -2,9 +2,9 @@ spring:
application
:
application
:
name
:
bishe-edge-center
name
:
bishe-edge-center
datasource
:
datasource
:
url
:
jdbc:mysql://
127.0.0.1:3
306/bishe
url
:
jdbc:mysql://
opengn.org:32
306/bishe
username
:
debian-sys-main
t
username
:
roo
t
password
:
rJu7Hmq3eIozdGwd
password
:
Vudo3423ljo
mybatis
:
mybatis
:
configuration
:
configuration
:
...
...
bishe-test/src/test/java/top/ninwoo/BisheMultiNodeTests.java
0 → 100644
View file @
a8028b50
package
top.ninwoo
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
top.ninwoo.bishe.starter.entity.ContainerMonitor
;
import
top.ninwoo.bishe.starter.service.ClusterService
;
import
top.ninwoo.bishe.starter.service.NetworkService
;
import
top.ninwoo.common.entity.*
;
import
top.ninwoo.test.BisheTestMain
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
BisheTestMain
.
class
)
public
class
BisheMultiNodeTests
{
@Autowired
private
ClusterService
clusterService
;
@Resource
private
NetworkService
networkService
;
@Test
public
void
testSendSeparateConfig
()
{
ArrayList
<
SeparatedClusterConfig
>
clusterConfigs
=
new
ArrayList
<>();
SeparatedClusterConfig
separatedClusterConfig
=
new
SeparatedClusterConfig
();
// TODO: 这个ID应该是从借口获取的
separatedClusterConfig
.
setEdgeNodeId
(
"192.168.31.154:8081"
);
ClusterConfig
clusterConfig
=
new
ClusterConfig
();
clusterConfig
.
setId
(
11111
l
);
clusterConfig
.
setOwner
(
"joliu"
);
ContainerDescription
containerDescription
=
new
ContainerDescription
();
containerDescription
.
setMode
(
"normal"
);
containerDescription
.
setReplicas
(
1
);
DockerContainer
container
=
new
DockerContainer
();
container
.
setName
(
"APP1"
);
container
.
setCommand
(
"sh"
);
container
.
setImage
(
"joliu/networktest"
);
containerDescription
.
setDockerContainer
(
container
);
List
<
ContainerDescription
>
cds
=
new
ArrayList
<>();
cds
.
add
(
containerDescription
);
ContainerDescription
containerDescription1
=
new
ContainerDescription
();
containerDescription1
.
setMode
(
"normal"
);
containerDescription1
.
setReplicas
(
1
);
DockerContainer
container1
=
new
DockerContainer
();
container1
.
setName
(
"APP2"
);
container1
.
setCommand
(
"sh"
);
container1
.
setImage
(
"joliu/networktest"
);
containerDescription1
.
setDockerContainer
(
container1
);
cds
.
add
(
containerDescription1
);
clusterConfig
.
setDockers
(
cds
);
NetworkTopology
topo
=
new
NetworkTopology
();
topo
.
setAppNames
(
new
String
[]{
"APP1"
,
"APP2"
,
"br:ovs1"
,
"br:remote:ovs2:192.168.31.16"
});
// 这个参数好像没啥用
topo
.
setTopologyId
(
11
);
topo
.
setTopology
(
new
int
[][]{{
0
,
0
,
0
,
0
},{
0
,
0
,
0
,
0
},{
1
,
1
,
0
,
0
},{
0
,
0
,
1
,
0
}});
clusterConfig
.
setTopology
(
topo
);
separatedClusterConfig
.
setClusterConfig
(
clusterConfig
);
clusterConfigs
.
add
(
separatedClusterConfig
);
// 构建第二个节点
SeparatedClusterConfig
separatedClusterConfig1
=
new
SeparatedClusterConfig
();
// TODO: 这个ID应该是从借口获取的
separatedClusterConfig1
.
setEdgeNodeId
(
"192.168.31.16:8081"
);
ClusterConfig
clusterConfig1
=
new
ClusterConfig
();
clusterConfig1
.
setId
(
11111
l
);
clusterConfig1
.
setOwner
(
"joliu"
);
ContainerDescription
containerDescription11
=
new
ContainerDescription
();
containerDescription11
.
setMode
(
"normal"
);
containerDescription11
.
setReplicas
(
1
);
DockerContainer
container11
=
new
DockerContainer
();
container11
.
setName
(
"APP3"
);
container11
.
setCommand
(
"sh"
);
container11
.
setImage
(
"joliu/networktest"
);
containerDescription11
.
setDockerContainer
(
container11
);
List
<
ContainerDescription
>
cds1
=
new
ArrayList
<>();
cds1
.
add
(
containerDescription11
);
ContainerDescription
containerDescription12
=
new
ContainerDescription
();
containerDescription12
.
setMode
(
"normal"
);
containerDescription12
.
setReplicas
(
1
);
DockerContainer
container12
=
new
DockerContainer
();
container12
.
setName
(
"APP4"
);
container12
.
setCommand
(
"sh"
);
container12
.
setImage
(
"joliu/networktest"
);
containerDescription12
.
setDockerContainer
(
container12
);
cds1
.
add
(
containerDescription12
);
clusterConfig1
.
setDockers
(
cds1
);
NetworkTopology
topo1
=
new
NetworkTopology
();
topo1
.
setAppNames
(
new
String
[]{
"APP3"
,
"APP4"
,
"br:ovs2"
,
"br:remote:ovs1:192.168.31.154"
});
// 这个参数好像没啥用
topo1
.
setTopologyId
(
11
);
topo1
.
setTopology
(
new
int
[][]{{
0
,
0
,
0
,
0
},{
0
,
0
,
0
,
0
},{
1
,
1
,
0
,
0
},{
0
,
0
,
1
,
0
}});
clusterConfig1
.
setTopology
(
topo1
);
separatedClusterConfig1
.
setClusterConfig
(
clusterConfig1
);
clusterConfigs
.
add
(
separatedClusterConfig1
);
clusterService
.
sendClusterConfigToEdgeNode
(
clusterConfigs
);
}
@Test
public
void
removeClusterFromEdgeNodeTest
()
{
clusterService
.
removeClusterFromEdgeNode
(
11111L
);
}
@Test
public
void
getLogicalNetworkTopologyTest
()
{
NetworkTopology
logicalNetworkTopology
=
networkService
.
getLogicalNetworkTopology
(
11111L
);
System
.
out
.
println
(
logicalNetworkTopology
);
}
@Test
public
void
getIpListByAppNameTest
()
{
List
<
String
>
ipList
=
networkService
.
getIpListByAppName
(
11111L
,
"APP3"
);
System
.
out
.
println
(
ipList
);
}
@Test
public
void
enableNetworkMonitorTest
()
throws
InterruptedException
{
String
res
=
networkService
.
enableNetworkMonitor
(
11111L
,
"Run"
);
System
.
out
.
println
(
res
);
}
@Test
public
void
cancelNetworkMonitorTest
()
{
String
run
=
networkService
.
cancelNetworkMonitor
(
11111L
,
"Run"
);
System
.
out
.
println
(
run
);
}
@Test
public
void
getNetworkMonitorTest
()
throws
InterruptedException
{
List
<
ContainerMonitor
>
run
=
networkService
.
getContainerMonitors
(
11111L
,
"Run"
);
int
i
=
0
;
while
(
i
<
10
)
{
run
.
forEach
(
c
->
{
System
.
out
.
println
(
c
.
getContainerInfo
());
});
Thread
.
sleep
(
500
);
i
++;
}
}
@Test
public
void
getAllEdgeNodeIdsTest
()
{
List
<
String
>
allEdgeNodeIds
=
clusterService
.
getAllEdgeNodeIds
();
System
.
out
.
println
(
allEdgeNodeIds
);
}
}
bishe-utils/src/main/java/top/ninwoo/utils/util/impl/OvsUtilsImpl.java
View file @
a8028b50
...
@@ -155,9 +155,10 @@ public class OvsUtilsImpl implements OvsUtils {
...
@@ -155,9 +155,10 @@ public class OvsUtilsImpl implements OvsUtils {
@Override
@Override
public
void
delBridge
(
String
name
)
{
public
void
delBridge
(
String
name
)
{
String
cmd
=
"echo 'Vudo3423' | sudo -S ovs-vsctl del-br "
+
name
;
String
cmd
=
"echo 'Vudo3423' | sudo -S ovs-vsctl del-br "
+
name
;
LOG
.
info
(
"删除网桥[{}]"
,
name
);
String
res
=
linuxCtlUtils
.
runCmd
(
cmd
);
String
res
=
linuxCtlUtils
.
runCmd
(
cmd
);
if
(
res
.
contains
(
"Error"
))
{
if
(
res
.
contains
(
"Error"
))
{
throw
new
RuntimeException
(
"bridge not found!"
);
LOG
.
warn
(
"bridge[{}] not found!"
,
name
);
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment