mirror of
https://github.com/joyieldInc/predixy.git
synced 2025-12-24 22:46:41 +08:00
fix bug
This commit is contained in:
parent
0fa85ac136
commit
61948e0280
42
.github/workflows/release.yml
vendored
Normal file
42
.github/workflows/release.yml
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
name: Publish And Deploy Demo # 自动部署的名称
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
master: # 当我们提交代码为tag 是以'v'开头的时候才会触发自动部署到服务端 如 git push tag v0.1.0
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-deploy:
|
||||||
|
runs-on: ubuntu-latest # 运行环境,告诉它运行在什么环境
|
||||||
|
steps: # 步骤
|
||||||
|
|
||||||
|
# 第一步:下载源码(CI/CD拉取代码到自己的本地)
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@master
|
||||||
|
|
||||||
|
# 第二步:打包构建
|
||||||
|
- name: Build
|
||||||
|
uses: actions/setup-make@master
|
||||||
|
- run: make # 安装第三方包
|
||||||
|
|
||||||
|
# 第三步:发布 Release
|
||||||
|
- name: Create Release # 创建Release,可以在仓库看到一个个版本
|
||||||
|
id: create_release
|
||||||
|
uses: actions/create-release@master
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.TOKEN }} # 之前GitHub添加的Token
|
||||||
|
with:
|
||||||
|
tag_name: ${{ github.ref }} # (tag)标签名称
|
||||||
|
release_name: Release ${{ github.ref }}
|
||||||
|
draft: false # 是否是草稿
|
||||||
|
prerelease: false # 是否是预发布
|
||||||
|
|
||||||
|
# 第四步:上传构建结果到 Release(把打包的tgz上传到Release)
|
||||||
|
- name: Upload Release Asset
|
||||||
|
id: upload-release-asset
|
||||||
|
uses: actions/upload-release-asset@master
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }} # 上传地址,通过创建Release获取到的
|
||||||
|
asset_path: ./release.tgz # 要上传文件
|
||||||
|
asset_name: release.tgz # 上传后的文件名
|
||||||
|
asset_content_type: application/x-tgz
|
||||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.idea
|
||||||
@ -86,21 +86,46 @@ void ClusterServerPool::refreshRequest(Handler* h)
|
|||||||
h->handleRequest(req);
|
h->handleRequest(req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ClusterServerPool::removeServer(Server* serv) {
|
||||||
|
if (nullptr == serv) return;
|
||||||
|
logNotice("redis cluster delete old server %s %s %s %s %s",
|
||||||
|
serv->name().data(),
|
||||||
|
serv->addr().data(),
|
||||||
|
serv->roleStr(),
|
||||||
|
serv->masterName().data(),
|
||||||
|
serv->dcName().data());
|
||||||
|
ServerGroup* g = getGroup(serv->name());
|
||||||
|
if (serv->group() && serv->group() != g) {
|
||||||
|
serv->group()->remove(serv);
|
||||||
|
}
|
||||||
|
auto mapServ = mServs.find(serv->addr());
|
||||||
|
if (mapServ != mServs.end())
|
||||||
|
{
|
||||||
|
mServs.erase(mapServ);
|
||||||
|
}
|
||||||
|
delete serv;
|
||||||
|
}
|
||||||
|
|
||||||
void ClusterServerPool::handleResponse(Handler* h, ConnectConnection* s, Request* req, Response* res)
|
void ClusterServerPool::handleResponse(Handler* h, ConnectConnection* s, Request* req, Response* res)
|
||||||
{
|
{
|
||||||
ClusterNodesParser p;
|
ClusterNodesParser p;
|
||||||
p.set(res->body());
|
p.set(res->body());
|
||||||
for (auto serv : mServPool) {
|
for (auto serv : mServPool) {
|
||||||
serv->setUpdating(true);
|
serv->setUpdating(true);
|
||||||
|
logNotice("redis old cluster nodes get node %s %s %s %s",
|
||||||
|
serv->name().data(),
|
||||||
|
serv->addr().data(),
|
||||||
|
serv->roleStr(),
|
||||||
|
serv->masterName().data());
|
||||||
}
|
}
|
||||||
while (true) {
|
while (true) {
|
||||||
ClusterNodesParser::Status st = p.parse();
|
ClusterNodesParser::Status st = p.parse();
|
||||||
if (st == ClusterNodesParser::Node) {
|
if (st == ClusterNodesParser::Node) {
|
||||||
logDebug("redis cluster update parse node %s %s %s %s",
|
logNotice("redis update cluster nodes get node %s %s %s %s",
|
||||||
p.nodeId().data(),
|
p.nodeId().data(),
|
||||||
p.addr().data(),
|
p.addr().data(),
|
||||||
p.flags().data(),
|
p.flags().data(),
|
||||||
p.master().data());
|
p.master().data());
|
||||||
if (p.addr().empty()) {
|
if (p.addr().empty()) {
|
||||||
logWarn("redis cluster nodes get node invalid %s %s %s %s",
|
logWarn("redis cluster nodes get node invalid %s %s %s %s",
|
||||||
p.nodeId().data(),
|
p.nodeId().data(),
|
||||||
@ -189,9 +214,12 @@ void ClusterServerPool::handleResponse(Handler* h, ConnectConnection* s, Request
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (auto serv : mServPool) {
|
for (std::vector<Server*>::iterator it = mServPool.begin(); it != mServPool.end();) {
|
||||||
|
auto serv = *it;
|
||||||
if (serv->updating()) {
|
if (serv->updating()) {
|
||||||
serv->setUpdating(false);
|
serv->setUpdating(false);
|
||||||
|
it = mServPool.erase(it); //删除不在集群中节点
|
||||||
|
removeServer(serv);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (serv->role() == Server::Master) {
|
if (serv->role() == Server::Master) {
|
||||||
@ -229,6 +257,7 @@ void ClusterServerPool::handleResponse(Handler* h, ConnectConnection* s, Request
|
|||||||
g->remove(serv);
|
g->remove(serv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
++it;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -25,6 +25,7 @@ public:
|
|||||||
{
|
{
|
||||||
return mServPool;
|
return mServPool;
|
||||||
}
|
}
|
||||||
|
void removeServer(Server* srv);
|
||||||
private:
|
private:
|
||||||
Server* getServer(Handler* h, Request* req, const String& key) const;
|
Server* getServer(Handler* h, Request* req, const String& key) const;
|
||||||
void refreshRequest(Handler* h);
|
void refreshRequest(Handler* h);
|
||||||
|
|||||||
@ -49,14 +49,16 @@ Server* ServerGroup::getServer(Handler* h, Request* req) const
|
|||||||
Server* serv = nullptr;
|
Server* serv = nullptr;
|
||||||
if (req->requireWrite()) {
|
if (req->requireWrite()) {
|
||||||
int cnt = mServs.size();
|
int cnt = mServs.size();
|
||||||
for (int i = 0; i < cnt; ++i) {
|
for (int i = cnt-1; i >= 0; --i) {
|
||||||
Server* s = mServs[i];
|
Server* s = mServs[i];
|
||||||
if (!s->online()) {
|
if (!s->online()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (s->role() == Server::Master) {
|
if (s->role() == Server::Master) {
|
||||||
serv = s;
|
serv = s;
|
||||||
break;
|
if (!s->fail()){
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (auto dataCenter = mPool->proxy()->dataCenter()) {
|
} else if (auto dataCenter = mPool->proxy()->dataCenter()) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user