Skip to content

Commit

Permalink
Merge branch 'master' into qa-2
Browse files Browse the repository at this point in the history
  • Loading branch information
bowenxia authored Mar 28, 2024
2 parents e56dce5 + 0b9907d commit 5b12bca
Show file tree
Hide file tree
Showing 10 changed files with 7,301 additions and 19,058 deletions.
5 changes: 0 additions & 5 deletions cypress/integration/slack/slack-short-link.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@ context('Slack short link', () => {
cy.visit('http://t.uber.com/cadence-slack');
});

it('should render the page with at least an email input.', () => {
cy.get('input[name="email"]')
.should('be.visible');
});

it('should redirect to the join URL', () => {
cy.location().should(({ host, pathname }) => {
expect(host).to.equal('uber-cadence.slack.com');
Expand Down
21,463 changes: 4,523 additions & 16,940 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"@vuepress/plugin-back-to-top": "^1.4.1",
"@vuepress/plugin-search": "^1.6.0",
"@vuepress/theme-blog": "^2.3.3",
"vuepress": "^1.4.1",
"vuepress": "^1.9.10",
"vuepress-plugin-clean-urls": "^1.1.1",
"vuepress-plugin-code-copy": "^1.0.6",
"vuepress-plugin-code-switcher": "^1.0.3",
Expand Down
2 changes: 1 addition & 1 deletion src/blog/.vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ module.exports = {
*/
footer: {
copyright: [
{ text: '© 2023 Uber Technologies, Inc.' },
{ text: ${new Date().getFullYear()} Uber Technologies, Inc.` },
]
},
summaryLength: 1000,
Expand Down
56 changes: 56 additions & 0 deletions src/blog/_posts/2024-3-11-community-spotlight-update-march-2024.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
title: Cadence Community Spotlight Update - March 2024

date: 2023-03-11
author: Kevin Corbett
authorlink: https://github.com/kcorbett-netapp
---
Welcome back to the latest in our regular Cadence community spotlight updates where we aim to deliver you news from in and around the Cadence community!
It’s been a few months since our [last update](https://cadenceworkflow.io/blog/2023/11/30/community-spotlight-update-november-2023/), so I have a bunch of exciting updates to share.

Let’s get started!

## Proposal for Cadence Plugin System ##
Community member [Mantas Sidlauskas](https://lt.linkedin.com/in/mantassidlauskas) drafted a thorough proposal around putting together a plugin system in Cadence. Aimed at enhancing the flexibility of integrating various components like storage, document search, and archival, this system encourages the use of external plugins, promoting innovation and reducing dependency complications. Your insights and feedback are crucial; learn more and contribute your thoughts at the link below:

- [Cadence Plugin System Proposal](https://github.com/uber/cadence/issues/5593)

A huge thank you to Mantas for initiating this work. This is an excellent example of how we can collaborate together to bring about new features that benefit us all.

## Admin API Permissions Rethinking ##
The community is deliberating on the permission requirements for the Admin API DescribeCluster endpoint. This vital discussion aims to ensure Cadence web's accessibility across different user levels. We're exploring various solutions and your participation would greatly influence the decision-making process. Feel free to chime in [here](https://github.com/uber/cadence/issues/5683)!

## New Java Samples for Cadence: Signal Workflow Interactions ##
In some exciting news for Java enthusiasts, a new sample has been added to the Cadence Java Samples repository, demonstrating how to initiate and interact with a signal workflow using the Cadence client. This practical example is a huge win for developers looking to deepen their understanding of workflow signaling in Java. Explore the new sample and expand your Cadence toolkit [here](https://github.com/uber/cadence-java-samples/pull/78).

## New GoLang client & Cadence Web Enhancements ##
Updates to the Cadence GoLang Client and Cadence Web have been rolled out, bringing new features and improvements that streamline user experiences. Highlights include upgraded Cassandra images, refined workflow interceptors, and more intuitive Cadence Web interfaces. Discover the full scope of updates on our GitHub repositories.

- [GoLang Client Releases](https://github.com/uber-go/cadence-client/releases)
- [Cadence Web Releases](https://github.com/uber/cadence-web/releases)

## Release Updates: v1.2.6 & v1.2.7 ##
Cadence recently saw the release of versions v1.2.6 and v1.2.7, featuring significant improvements and fixes that enhance the overall Cadence experience. These updates reflect a commitment to respond to the community's valuable feedback. Check out the detailed release notes on the [GitHub releases page](https://github.com/uber/cadence/releases)!

## Cadence in the News! ##
Below is a selection of Cadence related articles and blogs. Take a look and feel free to share your own with us via your own social media channels!

- [How to Avoid “Domain update too frequent” Error in Multi-Region Cadence](https://www.instaclustr.com/blog/how-to-avoid-domain-update-too-frequent-error-in-multi-region-cadence/)
- [Build a Digital Collectibles Portal Using Flow and Cadence (Part 1)](https://levelup.gitconnected.com/build-a-digital-collectibles-portal-using-flow-and-cadence-part-1-2783f2902ef6)

## Recent Events ##
Check out this recent webinar, "Building with Cadence: Quantifiable Efficiency," available on-demand now. Discover the robust features of Cadence and how it can streamline the development of distributed applications through an engaging demonstration by [John Del Castillo](https://au.linkedin.com/in/john-del-castillo-28b87b90?trk=people-guest_people_search-card).

- [On Demand: Building with Cadence: Quantifiable Efficiency](https://netapp.zoom.us/webinar/register/WN_jT5fxSldRhuzV0NSllBd7g#/registration)


\
\
\
That’s all for this month!

Your engagement and contributions are what make the Cadence community thrive. Whether you have innovative ideas, insightful feedback, or just want to chat about Cadence, we encourage you to join our [Slack #community channel](http://t.uber.com/cadence-slack).

We're committed to making this update as useful and informative as possible, so please share any feedback or suggestions you might have. Let’s keep building a vibrant and collaborative Cadence community together!

Looking forward to sharing more exciting updates next month!
4 changes: 2 additions & 2 deletions src/docs/03-concepts/07-archival.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,10 @@ domainDefaults:
archival:
history:
status: "enabled"
URI: "s3://dev-cad"
URI: "s3://put-name-of-your-s3-bucket-here"
visibility:
status: "enabled"
URI: "s3://dev-cad"
URI: "s3://put-name-of-your-s3-bucket-here" # most proably the same as the previous URI
```
## FAQ
Expand Down
33 changes: 31 additions & 2 deletions src/docs/07-operation-guide/01-setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ There are quite many configs in Cadence. Here are the most basic configuration t
| archival | This is for archival history feature, skip if you don’t need it. Go to [workflow archival](/docs/concepts/archival/#running-in-production) for how to configure archival in production | N/A |
| blobstore | This is also for archival history feature Default cadence server is using file based blob store implementation. | N/A |
| domainDefaults | default config for each domain. Right now only being used for Archival feature. | N/A |
| dynamicConfigClient | Dynamic config is a config manager that you can change config without restarting servers. It’s a good way for Cadence to keep high availability and make things easy to configure. <br/><br/>Default cadence server is using FileBasedClientConfig. But you can implement the dynamic config interface if you have a better way to manage.| Same as the sample development config |
| dynamicconfig (previously known as dynamicConfigClient) | Dynamic config is a config manager that enables you to change configs without restarting servers. It’s a good way for Cadence to keep high availability and make things easy to configure. <br/><br/>By default Cadence server uses `filebased` client which allows you to override default configs using a YAML file. However, this approach can be cumbersome in production environment because it's the operator's responsibility to sync the YAML files across Cadence nodes. <br/><br/>Therefore, we provide another option, `configstore` client, that stores config changes in the persistent data store for Cadence (e.g., Cassandra database) rather than the YAML file. This approach shifts the responsibility of syncing config changes from the operator to Cadence service. You can use Cadence CLI commands to list/get/update/restore config changes. <br/><br/>You can also implement the dynamic config interface if you have a better way to manage configs. | Same as the sample development config |
| persistence | Configuration for data store / persistence layer. <br/><br/>Values of DefaultStore VisibilityStore AdvancedVisibilityStore should be keys of map DataStores. <br/><br/>DefaultStore is for core Cadence functionality. <br/><br/>VisibilityStore is for basic visibility feature <br/><br/>AdvancedVisibilityStore is for advanced visibility<br/><br/> Go to [advanced visibility](/docs/concepts/search-workflows/#running-in-production) for detailed configuration of advanced visibility. See [persistence documentation](https://github.com/uber/cadence/blob/master/docs/persistence.md) about using different database for Cadence| As explanation |

### The full list of static configuration
Expand Down Expand Up @@ -124,7 +124,11 @@ NOTE 2: for <frontend,history,matching>.persistenceMaxQPS versus <frontend,histo

### How to update Dynamic Configuration

* Local docker-compose by mounting volume: update the `cadence` section in the docker compose file, and mount `config` folder to host machine like the following:
#### File-based client

By default, Cadence uses file-based client to manage dynamic configurations. Following are the approaches to changing dynamic configs using a yaml file.

* Local docker-compose by mounting volume: 1. Change the dynamic configs in `cadence/config/dynamicconfig/development.yaml`. 2. Update the `cadence` section in the docker compose file and mount `dynamicconfig` folder to host machine like the following:
```yaml
cadence:
image: ubercadence/server:master-auto-setup
Expand Down Expand Up @@ -156,6 +160,31 @@ Then you should see the logs like below
cadence_1 | {"level":"info","ts":"2021-05-07T18:43:07.869Z","msg":"First loading dynamic config","service":"cadence-frontend","key":"frontend.visibilityListMaxQPS,domainName:sample,clusterName:primary","value":"10000","default-value":"10","logging-call-at":"config.go:93"}
```
#### Config store client
You can set the `dynamicconfig` client in the static configuration to `configstore` in order to store config changes in a database, as shown below.
```yaml
dynamicconfig:
client: configstore
configstore:
pollInterval: "10s"
updateRetryAttempts: 2
FetchTimeout: "2s"
UpdateTimeout: "2s"
```

If you are still using the deprecated config `dynamicConfigClient` like below, you need to replace it with the new `dynamicconfig` as shown above to use `configstore` client.
```yaml
dynamicConfigClient:
filepath: "/etc/cadence/config/dynamicconfig/config.yaml"
pollInterval: "10s"
```
After changing the client to `configstore` and restarting Cadence, you can manage dynamic configs using `cadence admin config` CLI commands. You may need to set your custom dynamic configs again as the previous configs are not automatically migrated from the YAML file to the database.
* `cadence admin config listdc` lists all dynamic config overrides
* `cadence admin config getdc --dynamic_config_name <dynamic config keyname>` gets the value of a specific dynamic config
* `cadence admin config updc --dynamic_config_name <dynamic config keyname> --dynamic_config_value '{"Value": <new value>}'` updates the value of a specific dynamic config
* `cadence admin config resdc --dynamic_config_name <dynamic config keyname>` restores a specific dynamic config to its default value

## Other Advanced Features
* Go to [advanced visibility](/docs/concepts/search-workflows/#running-in-production) for how to configure advanced visibility in production.
Expand Down
8 changes: 4 additions & 4 deletions src/docs/07-operation-guide/05-migration.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ If you are using local domains, an easy way is to create a global domain and mig
## Migrate with [Global Domain Replication](/docs/concepts/cross-dc-replication/#running-in-production) feature
NOTE 1: If a domain are NOT a global domain, you cannot use the XDC feature to migrate. The only way is to migrate in a [naive approach](/docs/operation-guide/maintain/#migrate-cadence-cluster)

NOTE 2: Starting from [version 0.22.0](https://github.com/uber/cadence/releases/tag/v0.22.0) (by [PR](https://github.com/uber/cadence/pull/4239)), Cadence allows migrating to a cluster with higher value of numHistoryShards. Prior to the version, only migrating to the same numHistoryShards is allowed.
NOTE 2: Only migrating to the same numHistoryShards is allowed.

### Step 0 - Verify clusters' setup is correct

Expand All @@ -42,7 +42,7 @@ cadence --address <currentClusterAddress> admin domain list
```

Then
For each global domain.
For each global domain
```bash
cadence --address <newClusterAddress> --do <domain_name> domain describe
```
Expand Down Expand Up @@ -86,7 +86,7 @@ clusterMetadata:
initialFailoverVersion: 0
rpcName: "cadence-frontend"
rpcAddress: "<newClusterAddress>"
```
```
for newClusterName:
```yaml
dcRedirectionPolicy:
Expand All @@ -108,7 +108,7 @@ clusterMetadata:
initialFailoverVersion: 0
rpcName: "cadence-frontend"
rpcAddress: "<newClusterAddress>"
```
```
Deploy the config.
In older versions(<= v0.22), only `selected-apis-forwarding` is supported. This would require you to deploy a different set of workflow/activity connected to the new Cadence cluster during migration, if high availability/seamless migration is required. Because `selected-apis-forwarding` only forwarding the non-worker APIs.
Expand Down
6 changes: 5 additions & 1 deletion src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@ heroText: Fault-Tolerant Stateful Code Platform
tagline: Focus on your business logic and let Cadence take care of the complexity of distributed systems
actionText: Get Started →
actionLink: /docs/get-started/
footer: © 2023 Uber Technologies, Inc.

---
::: slot footer
© {{ new Date().getFullYear() }} [Uber Technologies, Inc.](https://uber.github.io/)
:::


<div class="section">
<div class="content">
Expand Down
Loading

0 comments on commit 5b12bca

Please sign in to comment.