From fed6a656a00e5d54ef07d99fbf006f6802b7ae30 Mon Sep 17 00:00:00 2001 From: cyjseagull Date: Tue, 10 Dec 2024 17:24:32 +0800 Subject: [PATCH 1/2] fix non-pir service publish auth bug --- .../config/ServicePublisherLoader.java | 15 ++- ...lback.java => ServicePublishCallback.java} | 93 ++++++++++--------- 2 files changed, 60 insertions(+), 48 deletions(-) rename wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/hook/{PirServicePublishCallback.java => ServicePublishCallback.java} (57%) diff --git a/wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/config/ServicePublisherLoader.java b/wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/config/ServicePublisherLoader.java index 55940e05..fc909c4d 100644 --- a/wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/config/ServicePublisherLoader.java +++ b/wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/config/ServicePublisherLoader.java @@ -7,7 +7,7 @@ import com.webank.wedpr.components.hook.ServiceHook; import com.webank.wedpr.components.loadbalancer.LoadBalancer; import com.webank.wedpr.components.publish.helper.PublishServiceHelper; -import com.webank.wedpr.components.publish.hook.PirServicePublishCallback; +import com.webank.wedpr.components.publish.hook.ServicePublishCallback; import com.webank.wedpr.components.publish.sync.PublishSyncer; import com.webank.wedpr.components.publish.sync.PublishSyncerCommitHandler; import com.webank.wedpr.components.publish.sync.api.PublishSyncerApi; @@ -47,10 +47,15 @@ public class ServicePublisherLoader { @PostConstruct public void init() { logger.info("Register serviceCallback"); - serviceHook.registerServiceCallback( - PublishServiceHelper.PublishType.PIR.getType(), - new PirServicePublishCallback( - loadBalancer, new WeDPRResponseFactory(), serviceAuthMapper)); + + ServicePublishCallback callback = + new ServicePublishCallback( + loadBalancer, new WeDPRResponseFactory(), serviceAuthMapper); + + for (PublishServiceHelper.PublishType publishType : + PublishServiceHelper.PublishType.values()) { + serviceHook.registerServiceCallback(publishType.getType(), callback); + } logger.info("Register serviceCallback success"); } diff --git a/wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/hook/PirServicePublishCallback.java b/wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/hook/ServicePublishCallback.java similarity index 57% rename from wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/hook/PirServicePublishCallback.java rename to wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/hook/ServicePublishCallback.java index 6c59a135..1210b03f 100644 --- a/wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/hook/PirServicePublishCallback.java +++ b/wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/hook/ServicePublishCallback.java @@ -25,6 +25,7 @@ import com.webank.wedpr.components.loadbalancer.LoadBalancer; import com.webank.wedpr.components.publish.config.ServicePublisherConfig; import com.webank.wedpr.components.publish.entity.request.PublishCreateRequest; +import com.webank.wedpr.components.publish.helper.PublishServiceHelper; import com.webank.wedpr.sdk.jni.transport.model.ServiceMeta; import java.util.ArrayList; import java.util.List; @@ -32,14 +33,14 @@ import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; -public class PirServicePublishCallback implements ServiceHook.ServiceCallback { - private static final Logger logger = LoggerFactory.getLogger(PirServicePublishCallback.class); +public class ServicePublishCallback implements ServiceHook.ServiceCallback { + private static final Logger logger = LoggerFactory.getLogger(ServicePublishCallback.class); private final LoadBalancer loadBalancer; private final BaseResponseFactory responseFactory; private final ServiceAuthMapper serviceAuthMapper; - public PirServicePublishCallback( + public ServicePublishCallback( LoadBalancer loadBalancer, BaseResponseFactory responseFactory, ServiceAuthMapper serviceAuthMapper) { @@ -71,50 +72,56 @@ public void batchInsertServiceAuthInfo( @Override public void onPublish(Object serviceInfo) throws Exception { PublishCreateRequest publishedServiceInfo = (PublishCreateRequest) serviceInfo; - ServiceMeta.EntryPointMeta selectedEntryPoint = - loadBalancer.selectService( - LoadBalancer.Policy.ROUND_ROBIN, - Common.getServiceName( - WeDPRCommonConfig.getAgency(), ServiceName.PIR.getValue()), - WeDPRCommonConfig.getWedprZone(), - null); - if (selectedEntryPoint == null) { - throw new WeDPRException( - "Publish service " - + publishedServiceInfo.getServiceId() - + " failed for not found " - + publishedServiceInfo.getServiceId() - + " service!"); - } - String url = - selectedEntryPoint.getUrl(ServicePublisherConfig.getPirPublishServiceUriPath()); - logger.info("onPublish, serviceInfo: {}, target: {}", publishedServiceInfo.toString(), url); - HttpClientImpl httpClient = - new HttpClientImpl( - url, - ServicePublisherConfig.getMaxTotalConnection(), - ServicePublisherConfig.buildConfig(), - responseFactory); - BaseResponse response = httpClient.executePost(publishedServiceInfo, HttpStatus.OK.value()); - if (response == null) { - throw new WeDPRException( - "publish service: " - + publishedServiceInfo.getServiceId() - + " for no response received!"); - } - if (!response.statusOk()) { - throw new WeDPRException( - "publish service: " - + publishedServiceInfo.getServiceId() - + " failed, response: " - + response.serialize()); + if (publishedServiceInfo.getPublishType() == PublishServiceHelper.PublishType.PIR) { + ServiceMeta.EntryPointMeta selectedEntryPoint = + loadBalancer.selectService( + LoadBalancer.Policy.ROUND_ROBIN, + Common.getServiceName( + WeDPRCommonConfig.getAgency(), ServiceName.PIR.getValue()), + WeDPRCommonConfig.getWedprZone(), + null); + if (selectedEntryPoint == null) { + throw new WeDPRException( + "Publish service " + + publishedServiceInfo.getServiceId() + + " failed for not found " + + publishedServiceInfo.getServiceId() + + " service!"); + } + String url = + selectedEntryPoint.getUrl(ServicePublisherConfig.getPirPublishServiceUriPath()); + logger.info( + "onPublish, serviceInfo: {}, target: {}", publishedServiceInfo.toString(), url); + HttpClientImpl httpClient = + new HttpClientImpl( + url, + ServicePublisherConfig.getMaxTotalConnection(), + ServicePublisherConfig.buildConfig(), + responseFactory); + BaseResponse response = + httpClient.executePost(publishedServiceInfo, HttpStatus.OK.value()); + if (response == null) { + throw new WeDPRException( + "publish service: " + + publishedServiceInfo.getServiceId() + + " for no response received!"); + } + if (!response.statusOk()) { + throw new WeDPRException( + "publish service: " + + publishedServiceInfo.getServiceId() + + " failed, response: " + + response.serialize()); + } + logger.info( + "pir onPublish success, service: {}, target: {}", + publishedServiceInfo.getServiceId(), + url); } // register auth information batchInsertServiceAuthInfo(publishedServiceInfo.getServiceId(), publishedServiceInfo); logger.info( - "onPublish success, service: {}, target: {}", - publishedServiceInfo.getServiceId(), - url); + "onPublish success, service: {}, target: {}", publishedServiceInfo.getServiceId()); } @Override From 104e219820426f5afe48801181fa6f42cf644174 Mon Sep 17 00:00:00 2001 From: cyjseagull Date: Tue, 10 Dec 2024 17:33:08 +0800 Subject: [PATCH 2/2] update logo --- README.md | 2 +- static/images/wedpr_logo.png | Bin 0 -> 24151 bytes .../impl/WedprPublishedServiceServiceImpl.java | 7 ++++--- 3 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 static/images/wedpr_logo.png diff --git a/README.md b/README.md index 72d9a238..769982d8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # WeDPR -![](https://wedpr-lab.readthedocs.io/zh_CN/latest/_static/images/wedpr_logo.png) +![](./static/images/wedpr_logo.png) [![CodeFactor](https://www.codefactor.io/repository/github/webankblockchain/wedpr/badge?s=a4c3fb6ffd39e7618378fe13b6bd06c5846cc103)](https://www.codefactor.io/repository/github/webankblockchain/wedpr) diff --git a/static/images/wedpr_logo.png b/static/images/wedpr_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8f10965f45e3a9205214b29f73c3248b60194a1c GIT binary patch literal 24151 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 z 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 P{0~!AdZ1V;ZyNAF7+vVe literal 0 HcmV?d00001 diff --git a/wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/service/impl/WedprPublishedServiceServiceImpl.java b/wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/service/impl/WedprPublishedServiceServiceImpl.java index 6bf2a030..2568a2bf 100644 --- a/wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/service/impl/WedprPublishedServiceServiceImpl.java +++ b/wedpr-components/service-publish/src/main/java/com/webank/wedpr/components/publish/service/impl/WedprPublishedServiceServiceImpl.java @@ -18,6 +18,7 @@ import com.webank.wedpr.components.publish.entity.request.PublishSearchRequest; import com.webank.wedpr.components.publish.entity.response.WedprPublishCreateResponse; import com.webank.wedpr.components.publish.entity.response.WedprPublishSearchResponse; +import com.webank.wedpr.components.publish.helper.PublishServiceHelper; import com.webank.wedpr.components.publish.service.WedprPublishedServiceService; import com.webank.wedpr.components.publish.sync.api.PublishSyncerApi; import java.util.Arrays; @@ -71,9 +72,9 @@ public WeDPRResponse createPublishService(String username, PublishCreateRequest publishCreate.checkServiceConfig(datasetMapper, username, WeDPRCommonConfig.getAgency()); publishCreate.setStatus(ServiceStatus.Publishing.getStatus()); this.publishedServiceMapper.insertServiceInfo(publishCreate); - boolean hasHook = this.serviceHook.onPublish(publishCreate.getServiceType(), publishCreate); - // without hook, set the status to success directly - if (!hasHook) { + this.serviceHook.onPublish(publishCreate.getServiceType(), publishCreate); + // non-pir service publish, set the status to success directly + if (!publishCreate.getPublishType().equals(PublishServiceHelper.PublishType.PIR)) { PublishedServiceInfo updatedServiceInfo = new PublishedServiceInfo(publishCreate.getServiceId()); updatedServiceInfo.setServiceStatus(ServiceStatus.PublishSuccess);