Skip to main content

29 posts tagged with "Apache ShenYu"

View All Tags

[Apache ShenYu 2.7.1 Version Release]

· 12 min read

Apache ShenYu

Apache ShenYu is a responsive API gateway developed using Java Reactor. With its high performance, dynamic and flexible traffic control, hot swap, easy deployment and other features, out of the box to provide users with a full lifecycle of 'API' gateway, including 'API' registration, service proxy, protocol conversion, 'API' documentation and 'API' governance and other functions. Apache ShenYu graduated as an Apache top-level project in 'July 2022'.

website: https://shenyu.apache.org

GitHub: https://github.com/apache/shenyu

Version preview

Apache ShenYu released version 2.7.1. This version merged 97 pull requests, including bug fixes, improvements, and new features such as MCP server enhancements, WASM runtime migration, security hardening, and infrastructure improvements. Version history: https://github.com/apache/shenyu/compare/v2.7.0.3...v2.7.1

What's Changed

  • fix non determinsitic tests (#6232) by @yonghanlin in #6232
  • fix non deterministic test (#6229) by @annhchen89 in #6229
  • Fix mcp server real url error (#6228) by @478320 in #6228
  • fix HttpUtilsTest nondeterminism from param order (#6230) by @yonghanlin in #6230
  • fix field-sqlmap.xml database reserved keywords (#6233) by @2823602869 in #6233
  • fix get the argument position mapping error and test method (#6236) by @MaMengzhen in #6236
  • add reset cache in MethodDescriptor (#6244) by @annhchen89 in #6244
  • [Fix] the selector and rule pagination non-functional (#6239) (#6243) by @VampireAchao in #6239
  • Fix Order Dependent Test in AiPromptPluginDataHandlerTest (#6245) by @annhchen89 in #6245
  • Fix non deterministic caused by Hashmap (#6246) by @annhchen89 in #6246
  • Enhance index method to build base URL from HTTP request, supporting reverse proxy scenarios (#6247) by @Aias00 in #6247
  • modify loadbalancer (#6251) by @yu199195 in #6251
  • feat: Introduce request body size limit, enhance AI proxy plugin's ChatClient caching with config hash, and refine prompt extraction from the request body. (#6248) by @Aias00 in #6248
  • fix ai proxy key (#6249) by @Aias00 in #6249
  • Refactor EtcdClient and RedisConnectionFactory for improved readability and maintainability (#6250) by @Aias00 in #6250
  • feat: Enhance IpUtils with Docker support, improved IP filtering (#6253) by @Aias00 in #6253
  • fix mcp tool sample error (#6259) by @MaMengzhen in #6259
  • infra: refactor infra zk module (#6199) by @yuluo-yx in #6199
  • feat: Rename ai proxy enhanced module to ai proxy and update related files (#6260) by @Aias00 in #6260
  • fix NettyHttpClientPlugin doRequest response unique headers error (#6258) by @MaMengzhen in #6258
  • fix 'addCustomHeaders' header value replace bug (#6257) by @MaMengzhen in #6257
  • fix order dependent test (#6261) by @annhchen89 in #6261
  • test(#5161): Improve test coverage for VersionUtils (#6264) by @airajena in #5161
  • [#6262] Fix OrderlyExecutor resource leak in shenyu-disruptor (#6269) by @airajena in #6269
  • Fix: Set isClosing flag in closeGracefully method as documented (#6263) by @airajena in #6263
  • fix add custom headers error (#6268) by @MaMengzhen in #6268
  • [ISSUE #6235] Set upstream check for each upstream. (#6272) by @jonasHanhan in #6272
  • fix mcp config shenyu context error (#6266) by @MaMengzhen in #6266
  • [type:fix] fix database init script (#6277) by @eye-gu in #6277
  • chore(deps): bump org.assertj:assertj-core in /shenyu-e2e (#6278) by @dependabot[bot] in #6278
  • Fix: Preserve Gateway's independent upstream health check state when receiving config updates from Admin (#6274) by @guanzhenxing in #6274
  • [Security] Harden Docker images to run as non-root user (#6273) by @RinZ27 in #6273
  • feat: Add new role search criteria (#6282) by @yangyx107 in #6282
  • feat:sync dashboard (#6283) by @yangyx107 in #6283
  • fix: handle tool not found error and update requestConfig type to JsonElement (#6284) by @Aias00 in #6284
  • [type:fix] set open (#6280) by @eye-gu in #6280
  • feat:modify instance createOrUpdate method log level (#6285) by @yangyx107 in #6285
  • replace stream().forEach() to forEach() (#6275) by @VampireAchao in #6275
  • fix: fix GsonUtils concurrent serialization exceptions (#6286) (#6287) by @fanpipi in #6286
  • fix: enhance logging and improve request handling in HTTP client plugins (#6288) by @Aias00 in #6288
  • fix mcp streamable (#6289) by @Aias00 in #6289
  • feat: refactor aiRequest and aiResponse models to support asynchronou… (#6296) by @478320 in #6296
  • feat: add CORS support with configurable allowed headers in MCP server (#6295) by @Aias00 in #6295
  • fix: improve upstream cache management and add recovery test for empty events (#6294) by @Aias00 in #6294
  • fix: improve MCP server plugin path handling and backward compatibility for argsPosition (#6293) by @Aias00 in #6293
  • Fix: loggion console add rule bug (#6291) by @yangyx107 in #6291
  • [type:fix] remove java 18 ci (#6306) by @moremind in #6306
  • [type:refactor] remove shenyu trie cache (#6303) by @moremind in #6303
  • chore(deps): bump oshi from 6.7.0 to 6.10.0 (#6301) by @yangpixi in #6301
  • chore(deps): bump org.apache.zookeeper:zookeeper from 3.9.4 to 3.9.5 (#6302) by @dependabot[bot] in #6302
  • fix: replace Collections.EMPTY_MAP with Collections.emptyMap() (#6299) by @Senrian in #6299
  • Fix: RuleServiceImpl#searchByPage() Selectors now populated from namespace only when condition selectors are null or empty. (#6305) by @bruce121 in #6305
  • fix(common): align PluginEnum sort values with DB schema.sql (#6310) (#6311) by @bwangll in #6310
  • infra(ci): add CI action condition (#6316) by @yuluo-yx in #6316
  • feat(mcp-server): enhance SDK compatibility with reflection caching and error handling (#6312) by @Aias00 in #6312
  • Align SSRF URL validation with OkHttp parsing (#6321) by @Aias00 in #6321
  • Hide registry passwords from admin API responses (#6322) by @Aias00 in #6322
  • Block redirect-based SSRF bypass in Swagger imports (#6320) by @Aias00 in #6320
  • Fix missing RBAC on selector, rule, and data-permission endpoints (#6319) by @Aias00 in #6319
  • Ci update cache (#6325) by @2823602869 in #6325
  • chore(deps): bump org.apache.kafka:kafka-clients from 3.9.1 to 3.9.2 (#6324) by @dependabot[bot] in #6324
  • Stop exposing login AES secrets to anonymous callers (#6323) by @Aias00 in #6323
  • chore(deps): bump org.bouncycastle:bcprov-jdk18on from 1.78 to 1.84 (#6331) by @dependabot[bot] in #6331
  • test(task#5161): improve test coverage for sync. (#6333) by @wy471x in #6333
  • test(task#5161): improve test coverage for admin. (#6328) by @wy471x in #6328
  • Fix websocket client spec builder reuse in plugin config (#6330) by @zhaoguhong in #6330
  • chore(deps): bump com.sun.mail:jakarta.mail from 2.0.1 to 2.0.2 (#6329) by @dependabot[bot] in #6329
  • Prevent duplicate full-mode URI heartbeats after repeated context refresh (#6337) by @Aias00 in #6337
  • [type:refactor] remove motan support (#6307) by @Aias00 in #6307
  • fix: correct instanceof check in addFailureUriDataRegister (#6345) by @eye-gu in #6345
  • fix(ai-prompt): preserve all original messages in decorateBody (#6343) by @eye-gu in #6343
  • fix: replace ArrayList with CopyOnWriteArrayList to avoid ConcurrentModificationException in URI heartbeat (#6352) by @eye-gu in #6352
  • fix: eliminate race condition in UpstreamCheckServiceTest.testReplace (#6355) by @eye-gu in #6355
  • Fix README documentation links (#6357) by @SPUERSAIYAN in #6357
  • Codex/fix sandbox response leak (#6359) by @SPUERSAIYAN in #6359
  • Stabilize k8s ingress startup healthchecks (#6361) by @Aias00 in #6361
  • Stabilize Sentinel integrated rate-limit assertions (#6374) by @Aias00 in #6374
  • Stabilize HTTP E2E compose startup readiness (#6363) by @Aias00 in #6363
  • Stabilize Sentinel CI assertion for PR 6375 (#6377) by @Aias00 in #6377
  • [ISSUE 6334] : Add uri validation for regex and other operators. (#6335) by @hengyuss in #6335
  • fix(netty): support configurable httpRequestDecoder properties (#6378) by @hqbhonker in #6378
  • Fix RocketMQ logging e2e bootstrap startup (#6379) by @Aias00 in #6379
  • fix(request): make add operations append existing values (#6375) by @SouthwestAsiaFloat in #6375
  • fix: skip request body for GET and HEAD requests (#6350) by @zongmingzhi in #6350
  • fix(ci): remove maven cache save to avoid incomplete cache pollution (#6383) by @eye-gu in #6383
  • [type:refactor] replace inactive wasmtime-java with chicory pure-Java WASM runtime (#6356) by @eye-gu in #6356
  • Prerelease/fix license (#6387) by @Aias00 in #6387
  • fix:fix local springmvc client cant register success (#6395) by @hengyuss in #6395
  • fix: DividePlugin specify-domain header to prevent cache pollution and restrict to configured upstreams (#6412) by @hengyuss in #6412
  • fix: Enforce account enabled check on every authenticated request in ShiroRealm [#6399] (#6415) by @hengyuss in #6415
  • fix(admin): limit swagger import response body size (#6411) by @SouthwestAsiaFloat in #6411
  • fix: Add decompression size limits to ZipUtil.unzip()[#6400] (#6416) by @hengyuss in #6416
  • fix: add mounts for external libraries in docker-compose to prevent startup issues (missing database connector driver) when using an external database datasource other than H2 (#6389) (#6391) by @exyb in #6389
  • [fix] Add missing permission annotations to /appAuth/updateSk and /sandbox/proxyGateway (#6388) by @Aias00 in #6388
  • Require permission for namespace plugin sync (#6384) by @Aias00 in #6384
  • fix: use come.google.re2j replace java.util.regex in RegexPredicateJu… (#6410) by @hengyuss in #6410
  • fix: Remove appSecret from sandbox-beforesign response header[#6402] (#6417) by @hengyuss in #6417

New Contributors

  • @2823602869 made their first contribution in #6233
  • @airajena made their first contribution in #6264
  • @bruce121 made their first contribution in #6305
  • @bwangll made their first contribution in #6311
  • @exyb made their first contribution in #6391
  • @fanpipi made their first contribution in #6287
  • @hengyuss made their first contribution in #6335
  • @hqbhonker made their first contribution in #6378
  • @jonasHanhan made their first contribution in #6272
  • @RinZ27 made their first contribution in #6273
  • @Senrian made their first contribution in #6299
  • @SouthwestAsiaFloat made their first contribution in #6375
  • @SPUERSAIYAN made their first contribution in #6357
  • @wy471x made their first contribution in #6333
  • @yangpixi made their first contribution in #6301
  • @yangyx107 made their first contribution in #6282
  • @yonghanlin made their first contribution in #6232
  • @zhaoguhong made their first contribution in #6330
  • @zongmingzhi made their first contribution in #6350

Become a contributor

We welcome every contributor to join ShenYu, and welcome contributors to participate in ShenYu in the spirit of Apache Way!

See the contributor guidelines:

https://shenyu.apache.org/zh/community/contributor-guide

Yu Siheng 2025 Open Source Summer Summary | From Open Source Newbie to Campus Ambassador

· 5 min read
478320

Reflecting on my connection with the Shenyu gateway, it feels like a destined encounter. Initially, I was just an ordinary student interested in the "Open Source Summer" program. At that time, I casually posted a question on a technical forum seeking advice on how to choose an open source community. Soon after, I received a warm reply from ZangZang in the Dromara community. Through the Dromara community, I read about A Chao’s legendary journey and also learned about the founder of Dromara, Mao Da. Unfortunately, the Dromara community was not participating in the Open Source Summer program.

Therefore, I searched again on the OSPP platform for a community that resonated with me, and unexpectedly I discovered the Shenyu community there. I was deeply interested in Shenyu, and to my surprise, I found many of the big contributors I had seen in the Dromara community were also actively contributing to Shenyu. This coincidence sparked a strong interest in the Shenyu community. It was this wonderful fate that led me to step into the vibrant Shenyu open source community for the first time and started my own open source journey.

From Theory to Practice: Taking the First Step into Open Source

With the guidance and support of many community mentors, I successfully submitted my first PR. After going through rigorous CI checks, it was finally merged. At that moment, I truly felt a profound sense of accomplishment. I continuously delved into Shenyu’s code architecture, asynchronous programming, synchronization mechanisms, and plugin chain design, while steadily contributing code. Participating in open source gradually became a natural choice for me and no longer felt difficult. I deeply relate to a senior from my school who once said, “Open source is all around us.”

Open Source Summer: The Transformation from Participant to Community Member

In the 2025 "Open Source Summer" event, I was fortunate to be selected for the "Apache ShenYu Proxy Plugin Fine-grained Service Configuration" project. This project aims to enhance the capabilities of the Apache Shenyu gateway by enabling flexible configuration of plugin behaviors at the Selector level. With the careful guidance of mentors and senior community members, I gained a deeper understanding of the plugin chain architecture and plugin scheduling process. Below is one of the diagrams I drew during my learning journey:

ospp-2025-478320-flow.png

After three months of dedicated effort, I successfully delivered fine-grained configuration features for Proxy, Cache, Logging, AI, and other plugins. This significantly improved the flexibility of traffic management, meeting the needs of more complex business scenarios. This experience not only deepened my understanding of the Shenyu configuration system and SPI mechanism but also equipped me with practical skills in system call implementation, synchronization mechanism design, and efficient debugging.

Role Upgrade: The Responsibility and Mission of a Campus Ambassador

This "Open Source Summer" experience was deeply meaningful to me, making me fully realize the true essence of openness, open source, and sharing. Open source is not just about making code public; it embodies a spirit of collaborative creation. With this belief, I hope more students interested in open source can learn about and participate in Open Source Summer. Therefore, this year I applied to become a Campus Ambassador for Open Source Summer at Fuzhou University, aiming to share my experiences and insights, guide new students to get involved, and witness many beginners grow into active contributors within the community.

Summary of Gains: Valuable Lessons on the Path of Growth

Looking back on the entire OSPP process, I deeply appreciate the critical importance of maintaining high scalability and flexibility in programming. Avoiding rigid, hard-coded solutions greatly facilitates future feature expansion and maintenance. However, my greatest gain from this event was not just the improvement of coding skills but the broadening of my horizons. I realized what kind of code is truly needed and discovered that I was capable of achieving more than I had expected. Equally important, I learned how to communicate effectively with mentors and made many friends in the community. The help and support from all the senior contributors were invaluable, and I am sincerely grateful to everyone in the community.

Looking Ahead: Continuing the Open Source Journey

In the future, I look forward to expanding my technical knowledge while meeting more like-minded partners. I also hope that someday I can give back to the community and bring along new friends to grow together. Meanwhile, I plan to continue dedicating myself to the open source community and help more students experience the growth and joy that open source brings.

This bond with Shenyu and my participation in OSPP have not only equipped me with valuable technical skills but also helped me understand the true meaning of sharing and collaboration. I wish to continue walking the open source path hand in hand with the Shenyu community in the years to come.

Become a Committer

· 2 min read
shown

Self-Introduction

Hello everyone, I'm Musheng (shown), currently a Go/Java development engineer. I'm very excited to receive the invitation to become a Committer of the Apache ShenYu project. It's an honor to officially join as an Apache ShenYu Committer and contribute to the project's growth.

I've always been passionate about open source communities and am also a Committer for Apache Hertzbeat and a PMC member of the Spring AI Alibaba project.

My Journey with Apache ShenYu

I've always had a strong interest in gateway projects. By chance, I met @Asia00 in the Apache Hertzbeat community. At that time, the ShenYu project was developing rapidly and had many "help wanted" and "good first issue" tags.

So I started submitting PRs to participate in the open source development of Apache ShenYu. After more than three months of continuous contributions, totaling 18k lines of code changes, I was nominated by @Asia00 and became a Committer.

Experience Sharing

The journey of open source begins with interest and grows through practice. Open source is not only a carrier of technical enthusiasm, but also a journey of growing together with the community.

For developers participating in open source for the first time, being brave to try is the most important step. Even the smallest contribution can accumulate valuable experience. In daily work, actively participate in community discussions and code reviews, learning continuously through communication; maintain patience and persistence, as every challenge and difficulty encountered is an opportunity for growth.

In the Apache ShenYu community, there are many opportunities to actually participate in the project. Pay more attention to the Issue list and communicate more - there will always be someone actively responding to your ideas and getting inspired by your perspectives.

Conclusion

I sincerely thank all community partners for their patient reviews and careful guidance. Becoming a Committer is just a small milestone for me. I look forward to continuing to uphold the spirit of open source with Apache ShenYu, attracting more excellent developers, and jointly building a technologically advanced and vibrant community. May the Apache ShenYu project soon reach 10k stars!

[Apache ShenYu 2.7.3 Version Release]

· 9 min read

Apache ShenYu

Apache ShenYu is a responsive API gateway developed using Java Reactor. With its high performance, dynamic and flexible traffic control, hot swap, easy deployment and other features, out of the box to provide users with a full lifecycle of 'API' gateway, including 'API' registration, service proxy, protocol conversion, 'API' documentation and 'API' governance and other functions. Apache ShenYu graduated as an Apache top-level project in 'July 2022'.

website: https://shenyu.apache.org

GitHub: https://github.com/apache/shenyu

Version preview

Three months later, Apache ShenYu released version 2.7.0.3. This version merged 77 pull requests, added 29 new features, and made several improvements, refactored many functions, and fixed several bugs. Version history: https://github.com/apache/shenyu/compare/v2.7.0.2...v2.7.0.3

What's Changed

  • feat(ut): add some tests by @yuluo-yx in #6105
  • [type: release] 2.7.0.2 release by @Aias00 in #6111
  • Bugfix: NacosConfig Test error by @Wweiei in #6116
  • Bugfix: MCP server plugin requestConfig too long by @Wweiei in #6115
  • fix: fix redisRateLimiter type cast error, for #6103 by @yuluo-yx in #6120
  • [fix] EtcdInstanceRegisterRepositoryTest run error by @Wweiei in #6127
  • Update comment to English in pom.xml by @yuluo-yx in #6128
  • fix: ShenyuBootstrapApplication run failed when using Nacos data sync by @Wweiei in #6124
  • fix: increase default timeout and improve error handling in MCP tools by @Aias00 in #6131
  • fix: replace deprecated Base64 class with java.util.Base64 by @Aias00 in #6132
  • sync dashboard by @Wweiei in #6133
  • Fix the issue where the cache is not properly deleted after removing a selector in the Nacos data synchronization method. by @17661152 in #6140
  • feat(ut): add shenyu-registry-api unit test by @yuluo-yx in #6135
  • feat: refactor registry reserved keyword fields by @Wweiei in #6139
  • feat: add sync data api unit test by @yuluo-yx in #6142
  • chore: update chinese comment to english and add license by @yuluo-yx in #6146
  • feat: refactor selector reserved keyword fields by @Wweiei in #6141
  • chore: translate zh to en by @yuluo-yx in #6149
  • [type:optimize] Optimize instance comparison logic in EurekaInstanceRegisterRepository by @yqw570994511 in #6154
  • [feat] refactor rule reserved keyword fields by @Wweiei in #6147
  • chore: translate zh to en by @yuluo-yx in #6151
  • [type:optimize] Optimize instance comparison logic in NacosInstanceRegisterRepository by @yqw570994511 in #6153
  • feat: Add more friendly prompt information to facilitate debugging by @yuluo-yx in #6157
  • test: add more test for FallbackShenyuClientRegisterService by @yuluo-yx in #6155
  • feat: adaptor other db for tag and appAuth by @yuluo-yx in #6152
  • [feat] mcpServer support object and array param. by @Wweiei in #6150
  • feat: sync dashboard by @Wweiei in #6160
  • Modify the test data of the sample test MotanPluginTest by @ywwana in #6164
  • [fix] fix data sync bug by @ywwana in #6165
  • [feat] motan plugin config based on selector by @478320 in #6058
  • chore: fix typo by @yuluo-yx in #6172
  • [type:fix] fix_e2e_kafka by @xcsnx in #6170
  • chore: add new line by @yuluo-yx in #6171
  • [fix] AiResponseTransformerPluginTest run error by @Wweiei in #6169
  • [feat] refactor reserved keyword fields for discovery_upstream table by @Wweiei in #6167
  • [type:fix] fix oracle schema.sql by @eye-gu in #6162
  • [feat] Gateway and client status management by @xchoox in #6057
  • [feat]: shenyu mcp plugin auto register by @478320 in #6163
  • [feat] cache plugin config based on selector by @478320 in #6068
  • feat: Ai Proxy enhanced with SpringAI & Fallback & Proxy apikey by @fantasy-lotus in #6145
  • [type:fix] fix init sql by @eye-gu in #6176
  • fix some bug of mcp-auto-register by @478320 in #6180
  • feat: ai proxy replace old with enhanced by @fantasy-lotus in #6174
  • fix shenyu-registry-nacos : modify nacos instance check. by @BraveheartStone in #6178
  • fix: doSelectMaster by @fantasy-lotus in #6185
  • fix: fix shenyu-sync-data-http sync password error by @yuluo-yx in #6181
  • feat: ai proxy sync dashboard by @fantasy-lotus in #6186
  • [fix] The "name" field of TagVO has been changed by @Wweiei in #6190
  • feat: adapt other db for discovery sql fields by @yuluo-yx in #6166
  • chore(deps): bump org.apache.zookeeper:zookeeper from 3.9.3 to 3.9.4 by @dependabot[bot] in #6183
  • [type:feat] add unit test by @xchoox in #6182
  • [feat] loggingRabbitMQ plugin config based on selector by @478320 in #6059
  • [feat] sofa plugin config based on selector by @478320 in #6062
  • [feat]: loggingKafka plugin config based on selector by @478320 in #6074
  • [type:optimize] Optimize LogCollectUtils by @liangjh98 in #6191
  • [type:feat] Change bootstrap heartbeat reporting by @xchoox in #6187
  • [type:feat] HTTP and WebSocket synchronous mode supports heartbeat detection by @xchoox in #6179
  • feat: add shenyu-register-client-api unit test by @yuluo-yx in #6192
  • [feat] github ci by @Aias00 in #6031
  • infra: add auto notify GHA when issue is created by @yuluo-yx in #6198
  • feat: add shenyu-register-client-beat module unit test by @yuluo-yx in #6193
  • infra: add issue label manager GHA by @yuluo-yx in #6197
  • [feat] mvnd by @Aias00 in #6041
  • [ISSUE #6144] This issue was fixed because when discovering downstream services via Nacos, the old IP address would overwrite the new IP address after the downstream service restarted. This caused the error "Can not find healthy upstream URL, please check your configuration!" when calling downstream services via Shenyu. by @BraveheartStone in #6201
  • [fix] the path truncation of get requests set by shenyuContext in MCP Server by @MaMengzhen in #6209
  • fix: When there are multiple indices under the alias shenyu-access-lo… by @wusuobuzai in #6203
  • Fix typo in active committers list by @yuluo-yx in #6205
  • feat: add shenyu-registry-k8s module unit test by @yuluo-yx in #6206
  • fix: remove unnecessary mock return value in MotanProxyServiceTest by @Aias00 in #6210
  • feat(ci): replace prow action with local issue-manager script by @yuluo-yx in #6211
  • Mcp auto register bug fix by @478320 in #6212
  • feat: mcp server autoRegister enhance by @478320 in #6213
  • fix: The use of outdated dependencies due to mvnd cache by @478320 in #6217
  • Fix the issue of multiple selectors connecting to different registry centers by @yunlongn in #6218
  • feat: import mcp server config by swagger doc by @478320 in #6219
  • refactor: extract base data for plugin, selector and rule data class by @yuluo-yx in #6215
  • feat: remove shenyu-infra-x-module by @yuluo-yx in #6216
  • chore: fix typos in some files by @khanhkhanhlele in #6224
  • fix: shenyu-examples-mcp by @478320 in #6226
  • Fix shenyu mcp bugs by @478320 in #6227
  • chore: update LICENSE with new dependencies and versions by @Aias00 in #6234

New Contributors

  • @17661152 made their first contribution in #6140
  • @xchoox made their first contribution in #6057
  • @BraveheartStone made their first contribution in #6178
  • @liangjh98 made their first contribution in #6191
  • @MaMengzhen made their first contribution in #6209
  • @wusuobuzai made their first contribution in #6203
  • @khanhkhanhlele made their first contribution in #6224

Become a contributor

We welcome every contributor to join ShenYu, and welcome contributors to participate in ShenYu in the spirit of Apache Way!

See the contributor guidelines:

https://shenyu.apache.org/zh/community/contributor-guide

[Apache ShenYu 2.7.0.2 Version Release]

· 6 min read

Apache ShenYu

Apache ShenYu is a responsive API gateway developed using Java Reactor. With its high performance, dynamic and flexible traffic control, hot swap, easy deployment and other features, out of the box to provide users with a full lifecycle of 'API' gateway, including 'API' registration, service proxy, protocol conversion, 'API' documentation and 'API' governance and other functions. Apache ShenYu graduated as an Apache top-level project in 'July 2022'.

website: https://shenyu.apache.org

GitHub: https://github.com/apache/shenyu

Version preview

Three months later, Apache ShenYu released version 2.7.0.2, which submitted a total of 54+ Pull requests, added about 19+ new features, added several enhancements, refactored several features, and fixed several bugs. A total of 20 contributors participated, with a cumulative total of 411+ contributors.

version records: https://github.com/apache/shenyu/compare/v2.7.0.1...v2.7.0.2

What's Changed

New Contributors

Become a contributor

We welcome every contributor to join ShenYu, and welcome contributors to participate in ShenYu in the spirit of Apache Way!

See the contributor guidelines:

https://shenyu.apache.org/zh/community/contributor-guide

[Apache ShenYu 2.7.0.1 Version Release]

· 8 min read

Apache ShenYu

Apache ShenYu is a responsive API gateway developed using Java Reactor. With its high performance, dynamic and flexible traffic control, hot swap, easy deployment and other features, out of the box to provide users with a full lifecycle of 'API' gateway, including 'API' registration, service proxy, protocol conversion, 'API' documentation and 'API' governance and other functions. Apache ShenYu graduated as an Apache top-level project in 'July 2022'.

website: https://shenyu.apache.org

GitHub: https://github.com/apache/shenyu

Version preview

Three months later, Apache ShenYu released version 2.7.0.1, which submitted a total of 72+ Pull requests, added about 17+ new features, added several enhancements, refactored several features, and fixed several bugs. A total of 32 contributors participated, with a cumulative total of 403+ contributors.

version records: https://github.com/apache/shenyu/compare/v2.7.0...v2.7.0.1

What's Changed

New Contributors

Become a contributor

We welcome every contributor to join ShenYu, and welcome contributors to participate in ShenYu in the spirit of Apache Way!

See the contributor guidelines:

https://shenyu.apache.org/zh/community/contributor-guide

【From Deep User to Apache ShenYu Committer】

· 5 min read
Wei Wei

Self Introduction

Name: Wei Wei

Github: https://github.com/Wweiei/

Email: weiwei@apache.org

Hello everyone, I am Wei Wei. I am very honored to be invited to become a Committer of the Apache ShenYu community. It is a great honor to grow with the community and contribute my part to the ShenYu project.

First Encounter with Apache ShenYu Gateway

I first came into contact with Apache ShenYu quite early, when it was still called SOUL and was in the Apache incubation stage. At that time, in my company had several API management projects that required a gateway. After comparing it with other open-source gateways of the same period, we found that Apache ShenYu was flexible in configuration, simple and easy to operate, rich in plugins and easy to extend. It also matched our technology stack very well, making it suitable for secondary development. Most importantly, the community was very active. Based on these factors, we finally selected Apache ShenYu as our gateway solution and applied it to our business gateway.

The Road to Open Source Contribution

Due to business needs at work, I needed to modify most of the existing plugins in ShenYu and develop many customized plugins. Therefore, I started reading ShenYu's source code, sorting out the overall call chain, and analyzing the specific implementation principles of most plugins.

After deeply using Apache ShenYu, I found that the ShenYu project is excellent in both architecture design and code implementation, and I learned a lot from it. This made me more determined to become a Committer of the Apache ShenYu community.

Following ShenYu's iterations and upgrades, I continuously discovered some bugs in the data synchronization process during usage. At the same time, I met Asia00 in the community and sought his guidance on how to participate in the project.

Subsequently, I subscribed to the ShenYu project mailing list, attended bi-weekly meetings, followed the issue list, and started to keep an eye on the project's development trends. I successively submitted some PRs to fix bugs and took on some community development tasks.

Here are my main contributions:

  • Fixed some bugs in data synchronization after version 2.7.0
  • Optimized the MCP plugin to support object type input parameters, and fixed some bugs in the MCP plugin during page editing and invocation
  • Optimized the Dubbo plugin logic to support selector-based configuration
  • Added registry management function

Community Participation and Growth

I grew from a user to a committer, from fixing bugs to optimizing plugins, and then to adding new features. During this process, I improved myself significantly.

Every two weeks on Thursday, I attend the Apache ShenYu community bi-weekly meeting. At the meeting, I can hear discussions about ShenYu functions and learn about the latest trends in the community.

In the process of using, developing plugins, and discovering problems, I need to constantly read ShenYu source code deeply and understand the implementation principles of each link. During this process, my coding ability has been greatly improved, and ShenYu has also given me a lot of inspiration in architectural design.

I would like to express my special thanks to the partners in the community who have helped me, thank you for your patient guidance and help.

Advice for Open Source Developers

Since I started working, I have always yearned for open source and wanted to contribute to the open source community, but I couldn't find a direction. Participating in open source is also a process of rapid self-improvement. At the beginning, it feels very difficult. I can't find a project to participate in, don't know how to submit issues and PRs, and don't know where to pick up tasks.

For beginners like me, you must be bold in trying open source and brave in participating in the community. When you find problems during use, you must study hard, analyze deeply, and find the root cause of the problem. Then boldly submit issues and PRs to the community and put forward your own suggestions.

Secondly, keep paying attention to the project, follow the project's issue list, participate in the project's bi-weekly meetings, pay attention to the latest trends of the project, be brave to challenge yourself, undertake the latest tasks of the community, participate in project discussions, and put forward your ideas and suggestions in time.

How to Participate in ShenYu

If you also want to contribute to Apache ShenYu, you can start from the following points:

Conclusion

I am very honored to be able to contribute to Apache ShenYu, and I thank the friends in the community for their help and support. Becoming a Committer is a new starting point for me. I also hope that more friends can join the Apache ShenYu community and contribute their strength to the open source cause together.

[Apache ShenYu 2.7.0 Version Release]

· 12 min read

Apache ShenYu

Apache ShenYu is a responsive API gateway developed using Java Reactor. With its high performance, dynamic and flexible traffic control, hot swap, easy deployment and other features, out of the box to provide users with a full lifecycle of 'API' gateway, including 'API' registration, service proxy, protocol conversion, 'API' documentation and 'API' governance and other functions. Apache ShenYu graduated as an Apache top-level project in 'July 2022'.

website: https://shenyu.apache.org

GitHub: https://github.com/apache/shenyu

Version preview

Six months later, Apache ShenYu released version 2.7.0, which submitted a total of 254+ Pull requests, added about 17+ new features, added several enhancements, refactored several features, and fixed several bugs. A total of 61 contributors participated, with a cumulative total of 350+ contributors.

version records: https://github.com/apache/shenyu/compare/v2.6.1...v2.7.0

✨ New Features

1.Upgrade dockerfile java runtime version 8 to 17

specific pr please see: https://github.com/apache/shenyu/pull/5374

2.Upgrade SpringBoot to 3.x

specific pr please see: https://github.com/apache/shenyu/pull/5583

3.Support ShenYu Admin Cluster

specific pr please see: https://github.com/apache/shenyu/pull/5544

https://github.com/apache/shenyu/pull/5592

4.Upgrade checkstyle plugin to 3.4.0

specific pr please see: https://github.com/apache/shenyu/pull/5614

5.Datasource support OceanBase

specific pr please see: https://github.com/apache/shenyu/pull/5617

6.Supports batch modification of selector/rule status

specific pr please see: https://github.com/apache/shenyu/pull/5499

7.Supports batch modification of PathAuth status

specific pr please see: https://github.com/apache/shenyu/pull/5488

8.Upgrade apache dubbo version

specific pr please see: https://github.com/apache/shenyu/pull/5527

9.Support Contribute with Gitpod

specific pr please see: https://github.com/apache/shenyu/pull/5610

10.Support Configs Export And Import

specific pr please see: https://github.com/apache/shenyu/pull/5474

11.Add shenyu client heartbeat

specific pr please see: https://github.com/apache/shenyu/pull/5659

12.Support Namespace

the specific use please see: https://shenyu.apache.org/docs/user-guide/admin-usage/namepsace

specific pr please see: https://github.com/apache/shenyu/pull/5584

https://github.com/apache/shenyu/pull/5715

https://github.com/apache/shenyu/pull/5716

https://github.com/apache/shenyu/pull/5719

https://github.com/apache/shenyu/pull/5729

https://github.com/apache/shenyu/pull/5734

https://github.com/apache/shenyu/pull/5735

https://github.com/apache/shenyu/pull/5740

https://github.com/apache/shenyu/pull/5746

https://github.com/apache/shenyu/pull/5757

https://github.com/apache/shenyu/pull/5760

https://github.com/apache/shenyu/pull/5765

https://github.com/apache/shenyu/pull/5769

https://github.com/apache/shenyu/pull/5771

https://github.com/apache/shenyu/pull/5779

https://github.com/apache/shenyu/pull/5786

https://github.com/apache/shenyu/pull/5790

https://github.com/apache/shenyu/pull/5798

https://github.com/apache/shenyu/pull/5799

https://github.com/apache/shenyu/pull/5823

https://github.com/apache/shenyu/pull/5847

https://github.com/apache/shenyu/pull/5857

13.Support k8s dynamically scale

specific pr please see: https://github.com/apache/shenyu/pull/5686

14.Invalidate Previous Tokens on New Login by Implementing Client ID Validation

specific pr please see: https://github.com/apache/shenyu/pull/5600

15.Support for gray release in divide-plugin

specific pr please see: https://github.com/apache/shenyu/pull/5763

16.Support Kubernetes registry

specific pr please see: https://github.com/apache/shenyu/pull/5769

⚡ Enhancement

1.Add rocketmq logging e2e test

specific pr please see: https://github.com/apache/shenyu/pull/5439

2.Enhance metrics-ratelimiter collect

specific pr please see: https://github.com/apache/shenyu/pull/5461

3.Enhance metrics collection for Sentinel, Resilience4j, and Hystrix

specific pr please see: https://github.com/apache/shenyu/pull/5468

4.Arrange sofa common tools dependencies

specific pr please see: https://github.com/apache/shenyu/pull/5609

6.Add missing license

specific pr please see: https://github.com/apache/shenyu/pull/5503

7.Set up callback for send message on Kafka

specific pr please see: https://github.com/apache/shenyu/pull/5748

8.Use the loadbalance configuration from metadata for Dubbo

specific pr please see: https://github.com/apache/shenyu/pull/5806

9.Add non null validation for upstream which obtained from select

specific pr please see: https://github.com/apache/shenyu/pull/5804

10.Set timeout which from rule handle to dubbo rpc context

specific pr please see: https://github.com/apache/shenyu/pull/5778

11.Publish event when enable selector and rule

specific pr please see: https://github.com/apache/shenyu/pull/5762

12.Remove closed session from the NAMESPACE_SESSION_MAP

specific pr please see: https://github.com/apache/shenyu/pull/5734

13.Add test case for ShenyuClientURIExecutorSubscriber

specific pr please see: https://github.com/apache/shenyu/pull/5413

14.Add test case for ShenyuClientIllegalArgumentException

specific pr please see: https://github.com/apache/shenyu/pull/5408

15.Add test case for ShenyuClientRegisterEventPublisher

specific pr please see: https://github.com/apache/shenyu/pull/5417

16.Add test case for ShenyuClientMetadataExecutorSubscriber

specific pr please see: https://github.com/apache/shenyu/pull/5404

17.Add test case for AbstractWasmPluginDataHandler

specific pr please see: https://github.com/apache/shenyu/pull/5451

18.Add test case for ShenyuClientRegisterRepositoryFactoryTest

specific pr please see: https://github.com/apache/shenyu/pull/5443

19.Add test case for AbstractWasmDiscoveryHandler

specific pr please see: https://github.com/apache/shenyu/pull/5453

20.Upgrade sofa rpc version support

specific pr please see: https://github.com/apache/shenyu/pull/5526

21.Add header key of Sign plugin to CrossFilter config

specific pr please see: https://github.com/apache/shenyu/pull/5627

22.Encrypt the password

specific pr please see: https://github.com/apache/shenyu/pull/5436

23.Add AbstractShenyuWasmPluginTest

specific pr please see: https://github.com/apache/shenyu/pull/5450

24.RewritePlugin/ContextPathPlugin supports across application and plugin

specific pr please see: https://github.com/apache/shenyu/pull/5438

25.Remove duplicate path check

specific pr please see: https://github.com/apache/shenyu/pull/5514

26.Remove Alibaba Dubbo Support

specific pr please see: https://github.com/apache/shenyu/pull/5500

27.Support docker env set http path

specific pr please see: https://github.com/apache/shenyu/pull/5833

28.Add some code refactor improve

specific pr please see: https://github.com/apache/shenyu/pull/5613

29.Support get token from cookie\header\param

specific pr please see: https://github.com/apache/shenyu/pull/5547

30.Make the default value of ShenyuDubboService annotation equal to that of DubboService annotation

specific pr please see: https://github.com/apache/shenyu/pull/5816

31.Add db script into admin package

specific pr please see: https://github.com/apache/shenyu/pull/5724

32.Get rid of the dead code and add some improvements

specific pr please see: https://github.com/apache/shenyu/pull/5849

https://github.com/apache/shenyu/pull/5803

https://github.com/apache/shenyu/pull/5789

33.MotanServiceEventListenerTest case optimization

specific pr please see: https://github.com/apache/shenyu/pull/5745

34.Delete duplicate maven in shenyu-registry-eureka.xml

specific pr please see: https://github.com/apache/shenyu/pull/5836

35.Jwt dependency updated

specific pr please see: https://github.com/apache/shenyu/pull/5480

36.Print plugin execute time

specific pr please see: https://github.com/apache/shenyu/pull/5437

37.Discovery Local support upstream health check in Admin

specific pr please see: https://github.com/apache/shenyu/pull/5596

38.Close rule cache

specific pr please see: https://github.com/apache/shenyu/pull/5589

39.Less concurrency

specific pr please see: https://github.com/apache/shenyu/pull/5587

40.Optimize logic to avoid "orElse" execution,Update VersionTwoExtractor.java

specific pr please see: https://github.com/apache/shenyu/pull/5415

♻️ Refactor

1.Admin distributed lock by spring-integration-jdbc

specific pr please see: https://github.com/apache/shenyu/pull/5457

2.Refactor beanUtils

specific pr please see: https://github.com/apache/shenyu/pull/5497

3.Remove macos ci

specific pr please see: https://github.com/apache/shenyu/pull/5559

4.Update logging plugin DataBuffer deprecated method

specific pr please see: https://github.com/apache/shenyu/pull/5620

5.Modify e2e k8s to docker compose

specific pr please see: https://github.com/apache/shenyu/pull/5710

6.Migrate Admin swagger from springfox to springdoc

specific pr please see: https://github.com/apache/shenyu/pull/5630

7.Refactor springcloud plugin

specific pr please see: https://github.com/apache/shenyu/pull/5695

8.Refactor some code

specific pr please see: https://github.com/apache/shenyu/pull/5568

9.Delete SO_SNDBUF & SO_RCVBUF

specific pr please see: https://github.com/apache/shenyu/pull/5502

10.Refactor shenyu-sync-data-http : replace log %s -> .

specific pr please see: https://github.com/apache/shenyu/pull/5465

11.Optimizing the node type listener

specific pr please see: https://github.com/apache/shenyu/pull/5435

12.Refactor plugin lifecycle

specific pr please see: https://github.com/apache/shenyu/pull/5432

13.Adjust code order and remove invalid input parameters

specific pr please see: https://github.com/apache/shenyu/pull/5397

🐛 Bug Fix

1.Fix duplicate header for request plugin

specific pr please see: https://github.com/apache/shenyu/pull/5846

2.Fix proxy.selector and discovery not delete when delete divide selector

specific pr please see: https://github.com/apache/shenyu/pull/5845

3.Fix LoggingPlugin error log catch

specific pr please see: https://github.com/apache/shenyu/pull/5842

4.Fix logging plugin sample bug

specific pr please see: https://github.com/apache/shenyu/pull/5429

5.Fix memory overflow

specific pr please see: https://github.com/apache/shenyu/pull/5407

6.Fix rewrite integrated test

specific pr please see: https://github.com/apache/shenyu/pull/5445

7.Fix AbstractWasmPluginDataHandlerTest

specific pr please see: https://github.com/apache/shenyu/pull/5464

8.Fix missing PRIMARY KEY in sql-script/h2/schema.sql

specific pr please see: https://github.com/apache/shenyu/pull/5481

9.Fix Data dictionary page data sorting exception

specific pr please see: https://github.com/apache/shenyu/pull/5483

10.FIx doc error

specific pr please see: https://github.com/apache/shenyu/pull/5505

11.Resolve dashboard routing mismatch post context-path update

specific pr please see: https://github.com/apache/shenyu/pull/5510

12.Fix etcd sync config problem

specific pr please see: https://github.com/apache/shenyu/pull/5535

13.Fix consul sync problem

specific pr please see: https://github.com/apache/shenyu/pull/5546

14.Fix the bug of being unable to query without registration

specific pr please see: https://github.com/apache/shenyu/pull/5578

15.Fix Plugin Edit Page Issue by Correcting Plugin ID Query and Updating Data Type

specific pr please see: https://github.com/apache/shenyu/pull/5622

16.Fix class AdminConstants has word spelling error

specific pr please see: https://github.com/apache/shenyu/pull/5637

17.Fix shenyu-examples-springmvc start failed

specific pr please see: https://github.com/apache/shenyu/pull/5664

18.Fix dashboard menu children sort not working problem

specific pr please see: https://github.com/apache/shenyu/pull/5691

19.Fix ShenyuApacheDubboXmlProviderApplication config

specific pr please see: https://github.com/apache/shenyu/pull/5811

20.Fix data sync dataId for proxy selector and discovery is not unique

specific pr please see: https://github.com/apache/shenyu/pull/5783

21.Filter disable dict option

specific pr please see: https://github.com/apache/shenyu/pull/5776

22.Fix SpringCloudParser MetaData null data

specific pr please see: https://github.com/apache/shenyu/pull/5737

23.Fix client register validation

specific pr please see: https://github.com/apache/shenyu/pull/5764

24.Config dubbo serialize-check-status=DISABLE

specific pr please see: https://github.com/apache/shenyu/pull/5756

25.Fix example TestApacheDubboXmlApplication start failed

specific pr please see: https://github.com/apache/shenyu/pull/5754

26.Fix the nacos data sync model missing the contextPath configuration

specific pr please see: https://github.com/apache/shenyu/pull/5722

27.Fix SPI create non singleton objects in multi-threaded scenarios

specific pr please see: https://github.com/apache/shenyu/pull/5713

28.Fix BadSqlGrammarException

specific pr please see: https://github.com/apache/shenyu/pull/5707

29.Fix ListUtil->merge exception

specific pr please see: https://github.com/apache/shenyu/pull/5642

30.Fix metaData disable not filtered

specific pr please see: https://github.com/apache/shenyu/pull/5638

31.Fix divide logging request method

specific pr please see: https://github.com/apache/shenyu/pull/5607

32.Fix e2e chunk header error

specific pr please see: https://github.com/apache/shenyu/pull/5593

33.Fix cookie error and sql check

specific pr please see: https://github.com/apache/shenyu/pull/5567

34.Fixed NPE issue

specific pr please see: https://github.com/apache/shenyu/pull/5539

https://github.com/apache/shenyu/pull/5530

35.Fix Invalid path error

specific pr please see: https://github.com/apache/shenyu/pull/5533

36.Fix hot load issue

specific pr please see: https://github.com/apache/shenyu/pull/5509

37.Fix e2e test case can not run wget command

specific pr please see: https://github.com/apache/shenyu/pull/5519

38.Fix fallback issue

specific pr please see: https://github.com/apache/shenyu/pull/5496

39.Resolve the sql error in rule-sqlmap.xml

specific pr please see: https://github.com/apache/shenyu/pull/5644

40.Fix readYmlBuildRepository NPE

specific pr please see: https://github.com/apache/shenyu/pull/5819

41.Fix nacos cannot be registered in the Shenyu-examples-SpringCloud project

specific pr please see: https://github.com/apache/shenyu/pull/5825

42.Fix springCloud ruleData path setting didn't used

specific pr please see: https://github.com/apache/shenyu/pull/5841

https://github.com/apache/shenyu/pull/5843

43.Fix shenyu-plugin-logging-elasticsearch : modify setIndexName of ElasticSearchLogConfig

specific pr please see: https://github.com/apache/shenyu/pull/5830

44.Fix Not first offline from the gateway when stopping service

specific pr please see: https://github.com/apache/shenyu/pull/5507

45.Fix k8s liveness probe can not run wget command error

specific pr please see: https://github.com/apache/shenyu/pull/5513

46.Fix AbstractNodeDataSyncService load discoverUpstream on startup

specific pr please see: https://github.com/apache/shenyu/pull/5473

Contributors

Special thanks to the following contributors for their support and participation in the '2.7.0' release (in no particular order).

0xmkzt,Divyansh200102,IceFoxs,JJellyfish,Kerwin Bryant,M.G. Ting,Misaya295,NanMu,Qi Xu,RayayChung,Ricco Chen,Sinsy, VampireAchao,WindSearcher,Wweiei,Yu Siheng,aias00,caaaaaat,crazyStar,crudboy,dragon-zhang,dyjxg4xygary,dyp314417995, eye-gu,frank,hdgaadd,hql0312,j@ckzh0u,jerbo99,loongs-zhang,mmengLong,moremind,po-168,tomsun28,ttfont,wlngo,wyfvsfy, xcsnx,xiangqianZ,xiaoyu,yunlongn,ywwana,zhengke zhou,zhengpeng,ywj1352

Become a contributor

We welcome every contributor to join ShenYu, and welcome contributors to participate in ShenYu in the spirit of Apache Way!

See the contributor guidelines:

https://shenyu.apache.org/zh/community/contributor-guide

Start small, become a Committer

· 4 min read
achao

Personal Introduction

First Encounter with Apache ShenYu Gateway

When I first came into contact with Apache ShenYu, I was involved in development work with the Dromara community. At that time, Yu Xiao (the founder and VP of Apache ShenYu) initiated a frontend development request within the community. Since I was familiar with the React technology used by ShenYu, I decided to join the contributors. Although I was not a direct user of ShenYu, contributing my frontend skills to the community felt like a very natural choice.

The Path of Open Source Contribution

During my contributions to the ShenYu project, I gradually clarified my direction and deepened my understanding of the project structure by reading the source code. In this process, I actively submitted code and performed fixes. Here are some of my contributions to the ShenYu project:

ShenYu

13 commits
6,084 ++ 2,379 --

  • Feature Development: Implemented client ID validation to invalidate old tokens on new login (#5600)
  • Feature Addition: Added menu buttons and permissions for the alert module (#5156)
  • Testing Expansion: Added unit test cases for PortUtils.findPort (#4604)
  • Default Configuration Improvement: Set NettyClient as the default HttpClient (#5200)
  • Bug Fix: Fixed routing mismatch issues due to context-path updates (#5510)
  • Time Format Correction: Resolved LocalDateTime formatting issues in the alert module (#5180)

ShenYu Dashboard

27 commits
1,780 ++ 402 --

  • Feature Development: Enabled token invalidation on new login to enhance security (#467)
  • New Feature: Added namespace selection for common components (#462)
  • Security Enhancement: Required verification code after multiple incorrect password attempts (#465)
  • UI Optimization: Removed unnecessary admin info edit buttons to simplify the interface (#463)
  • Batch Operation Support: Added batch enable/disable functionality for selectors and rules (#452)
  • User Experience Improvement: Enhanced the JSON editor experience (#374)
  • Performance Optimization: Improved React lifecycle management to boost Dashboard responsiveness (#369)
  • Module Improvement: Key optimizations for the alert module (#346)
  • Integration Enhancement: Integrated management interface and functions for the alert module (#333)
  • Parameter Management: Automatically use default parameters from documentation when API request parameters are missing (#332)
  • Documentation Standardization: Unified API documentation format and fixed multiple integration issues (#303)
  • Documentation Improvement: Comprehensive optimization of API documentation (#301)
  • Navigation Feature: Added system and resource search functionality in menu navigation (#279)
  • Routing Fix: Corrected routing mismatch issues after context-path updates (#428)
  • Tag Management: Resolved issues with tag deletion in the alert module (#377)
  • Deletion Confirmation: Added confirmation step for API tag deletion to prevent accidental deletions (#375)
  • Page Error Fix: Fixed proxy page errors caused by component mounting (#351)
  • Query Rendering Fix: Resolved query rendering issues in HeadersEditor (#331)

Community Participation and Growth

By participating in ShenYu's community meetings and contributing code, I not only improved my technical skills but also learned how to collaborate more effectively in open source projects. Working with community members gave me a deep appreciation for the openness and inclusiveness of the open source community.

Advice for Open Source Developers

For developers looking to join open source projects, my advice is: start with small tasks and don't be afraid of the small things. As long as it contributes to the project, every contribution will be valued by the community. Continuously learn and keep trying, and you will eventually find the contribution path that suits you.

Contributing to ShenYu Together

If you want to contribute to Apache ShenYu, you can start with the following:

Conclusion

Being nominated as a ShenYu Committer is a significant milestone for me. I will continue to contribute to ShenYu and look forward to more developers joining us to drive ShenYu's development forward.

[My Open Source Journey with Apache ShenYu]

· 4 min read
Hongyu Liu

Personal Introduction

Name: Liu Hongyu

GitHub: https://github.com/Aias00/

Email: liuhongyu@apache.org

First Encounter with Apache ShenYu Gateway

I first came across the Apache ShenYu Gateway during a business transformation project at my company when we were evaluating gateway technologies. At that time, Apache ShenYu was still in the Apache Incubator. Compared to other similar products, Apache ShenYu offered a user-friendly control management interface, rich plugin features, and a perfect match with our technology stack. The active community was the icing on the cake, making Apache ShenYu our ultimate choice for the gateway solution. It has been widely used in various business scenarios since then.

The Journey of Open Source Contributions

As I applied Apache ShenYu in my work, I gradually went from a simple user to a deep understanding of the system. In order to solve some potential problems and customize some business plugins, I started reading ShenYu's source code and learning its design ideas and implementation principles.

After Apache ShenYu graduated from the Incubator, I aspired to transition from a regular user to a contributor and make some contributions to the ShenYu community.

I started by reading the contributor guide, subscribing to the developer mailing list, and following the ShenYu GitHub repository to check issues and pull requests.

After reading a few issues, I found one about supplementing unit tests, so I decided to give it a try. I forked the ShenYu repository, cloned it locally, modified the unit test content, and submitted a pull request. This PR was merged quickly, marking my first contribution to the ShenYu community.

When I saw my code merged into the main branch, I was overwhelmed with excitement. This experience solidified my determination to "become a ShenYu Committer."

Subsequently, I started to delve deeper into the project by reading documents and source code, as well as participating in bi-weekly meetings. I started with simple issue tasks, continuously learning, and gradually took on more challenging tasks. My main contributions include:

  • Added batch import and export functionality for configurations
  • Upgraded the Sofa Rpc version
  • Removed Alibaba Dubbo dependency
  • Upgraded the Apache Dubbo version
  • Upgraded from JDK8 to JDK17 in collaboration with community partners
  • Fixed some issues encountered during GitHub pipeline execution
  • Added Shenyu Admin cluster functionality
  • Upgraded the SpringBoot version
  • Developed the KubeSphere extension for Apache ShenYu

Community Participation and Growth

Apache ShenYu contributors have a fixed online meeting every other Thursday evening. The meeting mainly discusses features in the Roadmap and some issues raised by the community. At the same time, we can also speak freely if we have any questions or ideas.

In these meetings, I met many partners who are passionate about open source. Through meeting discussions and task assignments, I continuously learn new knowledge and have the opportunity to contribute my strength to the community and the industry.

In this process, I not only improved my technical skills but also learned how to collaborate with others, how to communicate and cooperate better.

I would like to express my sincere gratitude to the partners who have helped me in the community. Thanks to their patient guidance and assistance, I was able to integrate into the community more quickly and better contribute to the community.

Suggestions for Open Source Developers

Open source development is a meaningful but challenging endeavor that requires a significant investment of time and energy. It involves continuous learning and experimentation, but it also brings a lot of satisfaction and happiness.

Sometimes you may encounter various problems, but don't give up. Try more, think more, and you will find that the problem is not that difficult to solve.

At the same time, participate more in community activities and communicate more with community partners. You will find that the open source community is a place full of love and kindness, where everyone helps each other and makes progress together.

How to Participate in ShenYu

If you also want to join the Apache ShenYu community, you can refer to the following methods:

  1. Check the contributor guide provided on the Apache ShenYu official website: https://shenyu.apache.org/zh/community/contributor-guide

  2. Follow ShenYu's GitHub Issues and participate in feature development and bug fixing: https://github.com/apache/shenyu/issues

Conclusion

Becoming a Committer is a new starting point. I hope to keep my original intention and continue to contribute to the open source cause. I also hope that more friends can join the Apache ShenYu community and work together to contribute to the open source cause.