aboutsummaryrefslogtreecommitdiff
path: root/weed/shell
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2023-12-11 12:05:54 -0800
committerGitHub <noreply@github.com>2023-12-11 12:05:54 -0800
commit580940bf8214ac467694a09436ffc6d97066b97c (patch)
treeabcc275ebd0088b817f9155b8c08f1bc3d3a0fae /weed/shell
parent8784553501f6569cc2419769f18f09099cb7d30c (diff)
downloadseaweedfs-580940bf8214ac467694a09436ffc6d97066b97c.tar.xz
seaweedfs-580940bf8214ac467694a09436ffc6d97066b97c.zip
Merge accumulated changes related to message queue (#5098)
* balance partitions on brokers * prepare topic partition first and then publish, move partition * purge unused APIs * clean up * adjust logs * add BalanceTopics() grpc API * configure topic * configure topic command * refactor * repair missing partitions * sequence of operations to ensure ordering * proto to close publishers and consumers * rename file * topic partition versioned by unixTimeNs * create local topic partition * close publishers * randomize the client name * wait until no publishers * logs * close stop publisher channel * send last ack * comments * comment * comments * support list of brokers * add cli options * Update .gitignore * logs * return io.eof directly * refactor * optionally create topic * refactoring * detect consumer disconnection * sub client wait for more messages * subscribe by time stamp * rename * rename to sub_balancer * rename * adjust comments * rename * fix compilation * rename * rename * SubscriberToSubCoordinator * sticky rebalance * go fmt * add tests * balance partitions on brokers * prepare topic partition first and then publish, move partition * purge unused APIs * clean up * adjust logs * add BalanceTopics() grpc API * configure topic * configure topic command * refactor * repair missing partitions * sequence of operations to ensure ordering * proto to close publishers and consumers * rename file * topic partition versioned by unixTimeNs * create local topic partition * close publishers * randomize the client name * wait until no publishers * logs * close stop publisher channel * send last ack * comments * comment * comments * support list of brokers * add cli options * Update .gitignore * logs * return io.eof directly * refactor * optionally create topic * refactoring * detect consumer disconnection * sub client wait for more messages * subscribe by time stamp * rename * rename to sub_balancer * rename * adjust comments * rename * fix compilation * rename * rename * SubscriberToSubCoordinator * sticky rebalance * go fmt * add tests * tracking topic=>broker * merge * comment
Diffstat (limited to 'weed/shell')
-rw-r--r--weed/shell/command_mq_balance.go46
-rw-r--r--weed/shell/command_mq_topic_configure.go (renamed from weed/shell/command_mq_topic_create.go)16
-rw-r--r--weed/shell/command_mq_topic_list.go4
3 files changed, 56 insertions, 10 deletions
diff --git a/weed/shell/command_mq_balance.go b/weed/shell/command_mq_balance.go
new file mode 100644
index 000000000..dbe218b54
--- /dev/null
+++ b/weed/shell/command_mq_balance.go
@@ -0,0 +1,46 @@
+package shell
+
+import (
+ "context"
+ "fmt"
+ "github.com/seaweedfs/seaweedfs/weed/pb"
+ "github.com/seaweedfs/seaweedfs/weed/pb/mq_pb"
+ "io"
+)
+
+func init() {
+ Commands = append(Commands, &commandMqBalanceTopics{})
+}
+
+type commandMqBalanceTopics struct {
+}
+
+func (c *commandMqBalanceTopics) Name() string {
+ return "mq.balance"
+}
+
+func (c *commandMqBalanceTopics) Help() string {
+ return `balance topic partitions
+
+`
+}
+
+func (c *commandMqBalanceTopics) Do(args []string, commandEnv *CommandEnv, writer io.Writer) error {
+
+ // find the broker balancer
+ brokerBalancer, err := findBrokerBalancer(commandEnv)
+ if err != nil {
+ return err
+ }
+ fmt.Fprintf(writer, "current balancer: %s\n", brokerBalancer)
+
+ // balance topics
+ return pb.WithBrokerGrpcClient(false, brokerBalancer, commandEnv.option.GrpcDialOption, func(client mq_pb.SeaweedMessagingClient) error {
+ _, err := client.BalanceTopics(context.Background(), &mq_pb.BalanceTopicsRequest{})
+ if err != nil {
+ return err
+ }
+ return nil
+ })
+
+}
diff --git a/weed/shell/command_mq_topic_create.go b/weed/shell/command_mq_topic_configure.go
index 7e1f5d65e..c5721d9d9 100644
--- a/weed/shell/command_mq_topic_create.go
+++ b/weed/shell/command_mq_topic_configure.go
@@ -11,25 +11,25 @@ import (
)
func init() {
- Commands = append(Commands, &commandMqTopicCreate{})
+ Commands = append(Commands, &commandMqTopicConfigure{})
}
-type commandMqTopicCreate struct {
+type commandMqTopicConfigure struct {
}
-func (c *commandMqTopicCreate) Name() string {
- return "mq.topic.create"
+func (c *commandMqTopicConfigure) Name() string {
+ return "mq.topic.configure"
}
-func (c *commandMqTopicCreate) Help() string {
- return `create a topic with a given name
+func (c *commandMqTopicConfigure) Help() string {
+ return `configure a topic with a given name
Example:
- mq.topic.create -namespace <namespace> -topic <topic_name> -partition_count <partition_count>
+ mq.topic.configure -namespace <namespace> -topic <topic_name> -partition_count <partition_count>
`
}
-func (c *commandMqTopicCreate) Do(args []string, commandEnv *CommandEnv, writer io.Writer) error {
+func (c *commandMqTopicConfigure) Do(args []string, commandEnv *CommandEnv, writer io.Writer) error {
// parse parameters
mqCommand := flag.NewFlagSet(c.Name(), flag.ContinueOnError)
diff --git a/weed/shell/command_mq_topic_list.go b/weed/shell/command_mq_topic_list.go
index 5fb913a8a..cf6b97e96 100644
--- a/weed/shell/command_mq_topic_list.go
+++ b/weed/shell/command_mq_topic_list.go
@@ -3,7 +3,7 @@ package shell
import (
"context"
"fmt"
- "github.com/seaweedfs/seaweedfs/weed/mq/balancer"
+ "github.com/seaweedfs/seaweedfs/weed/mq/pub_balancer"
"github.com/seaweedfs/seaweedfs/weed/pb"
"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
"github.com/seaweedfs/seaweedfs/weed/pb/mq_pb"
@@ -52,7 +52,7 @@ func (c *commandMqTopicList) Do(args []string, commandEnv *CommandEnv, writer io
func findBrokerBalancer(commandEnv *CommandEnv) (brokerBalancer string, err error) {
err = commandEnv.WithFilerClient(false, func(client filer_pb.SeaweedFilerClient) error {
resp, err := client.FindLockOwner(context.Background(), &filer_pb.FindLockOwnerRequest{
- Name: balancer.LockBrokerBalancer,
+ Name: pub_balancer.LockBrokerBalancer,
})
if err != nil {
return err