Skip to content

meta fails to parse bucket name containing dot (.) #22044

@cyberchen98

Description

@cyberchen98

Describe the bug

When using S3 as state store, with an S3 bucket name that contains a dot (.), the meta-node panics with a ConfigInvalid error. However, S3 bucket names with dots are valid according to naming rules. The same configuration works correctly when using a bucket name without dots.

Error message/log

thread 'rw-standalone-meta' panicked at /risingwave/src/object_store/src/object/mod.rs:887:22:
called `Result::unwrap()` on an `Err` value: ConfigInvalid (permanent) at , context: { service: s3 } => The bucket is misconfigured
stack backtrace:
   0: rust_begin_unwind
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/std/src/panicking.rs:695:5
   1: core::panicking::panic_fmt
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/core/src/panicking.rs:75:14
   2: core::result::unwrap_failed
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/core/src/result.rs:1704:5
   3: core::result::Result<T,E>::unwrap
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/core/src/result.rs:1109:23
   4: risingwave_object_store::object::build_remote_object_store::{{closure}}
             at ./risingwave/src/object_store/src/object/mod.rs:882:21
   5: risingwave_meta::hummock::manager::HummockManager::new_impl::{{closure}}
             at ./risingwave/src/meta/src/hummock/manager/mod.rs:252:14
   6: risingwave_meta::hummock::manager::HummockManager::new::{{closure}}
             at ./risingwave/src/meta/src/hummock/manager/mod.rs:193:10
   7: risingwave_meta_node::server::start_service_as_election_leader::{{closure}}
             at ./risingwave/src/meta/node/src/server.rs:378:6
   8: risingwave_meta_node::server::rpc_serve_with_store::{{closure}}
             at ./risingwave/src/meta/node/src/server.rs:254:6
   9: risingwave_meta_node::server::rpc_serve::{{closure}}
             at ./risingwave/src/meta/node/src/server.rs:171:6
  10: risingwave_meta_node::start::{{closure}}
             at ./risingwave/src/meta/node/src/lib.rs:503:10
  11: <core::pin::Pin<P> as core::future::future::Future>::poll
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/core/src/future/future.rs:124:9
  12: <tracing::instrument::Instrumented<T> as core::future::future::Future>::poll
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tracing-0.1.40/src/instrument.rs:321:9
  13: tokio::runtime::task::core::Core<T,S>::poll::{{closure}}
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/core.rs:331:17
  14: tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/loom/std/unsafe_cell.rs:16:9
  15: tokio::runtime::task::core::Core<T,S>::poll
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/core.rs:320:30
  16: tokio::runtime::task::harness::poll_future::{{closure}}
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/harness.rs:532:19
  17: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/core/src/panic/unwind_safe.rs:272:9
  18: std::panicking::try::do_call
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/std/src/panicking.rs:587:40
  19: std::panicking::try
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/std/src/panicking.rs:550:19
  20: std::panic::catch_unwind
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/std/src/panic.rs:359:14
  21: tokio::runtime::task::harness::poll_future
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/harness.rs:520:18
  22: tokio::runtime::task::harness::Harness<T,S>::poll_inner
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/harness.rs:209:27
  23: tokio::runtime::task::harness::Harness<T,S>::poll
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/harness.rs:154:15
  24: tokio::runtime::task::raw::RawTask::poll
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/raw.rs:201:18
  25: tokio::runtime::task::LocalNotified<S>::run
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/mod.rs:463:9
  26: tokio::runtime::scheduler::multi_thread::worker::Context::run_task::{{closure}}
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/scheduler/multi_thread/worker.rs:674:22
  27: tokio::task::coop::with_budget
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/task/coop/mod.rs:167:5
  28: tokio::task::coop::budget
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/task/coop/mod.rs:133:5
  29: tokio::runtime::scheduler::multi_thread::worker::Context::run_task
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/scheduler/multi_thread/worker.rs:594:9
  30: tokio::runtime::scheduler::multi_thread::worker::Context::run
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/scheduler/multi_thread/worker.rs:542:24
  31: tokio::runtime::scheduler::multi_thread::worker::run::{{closure}}::{{closure}}
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/scheduler/multi_thread/worker.rs:507:21
  32: tokio::runtime::context::scoped::Scoped<T>::set
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/context/scoped.rs:40:9
  33: tokio::runtime::context::set_scheduler::{{closure}}
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/context.rs:180:26
  34: std::thread::local::LocalKey<T>::try_with
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/std/src/thread/local.rs:311:12
  35: std::thread::local::LocalKey<T>::with
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/std/src/thread/local.rs:275:15
  36: tokio::runtime::context::set_scheduler
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/context.rs:180:9
  37: tokio::runtime::scheduler::multi_thread::worker::run::{{closure}}
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/scheduler/multi_thread/worker.rs:502:9
  38: tokio::runtime::context::runtime::enter_runtime
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/context/runtime.rs:65:16
  39: tokio::runtime::scheduler::multi_thread::worker::run
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/scheduler/multi_thread/worker.rs:494:5
  40: tokio::runtime::scheduler::multi_thread::worker::Launch::launch::{{closure}}
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/scheduler/multi_thread/worker.rs:460:45
  41: <tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/blocking/task.rs:42:21
  42: <tracing::instrument::Instrumented<T> as core::future::future::Future>::poll
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tracing-0.1.40/src/instrument.rs:321:9
  43: tokio::runtime::task::core::Core<T,S>::poll::{{closure}}
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/core.rs:331:17
  44: tokio::loom::std::unsafe_cell::UnsafeCell<T>::with_mut
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/loom/std/unsafe_cell.rs:16:9
  45: tokio::runtime::task::core::Core<T,S>::poll
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/core.rs:320:30
  46: tokio::runtime::task::harness::poll_future::{{closure}}
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/harness.rs:532:19
  47: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/core/src/panic/unwind_safe.rs:272:9
  48: std::panicking::try::do_call
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/std/src/panicking.rs:587:40
  49: std::panicking::try
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/std/src/panicking.rs:550:19
  50: std::panic::catch_unwind
             at ./rustc/f9e0239a7bc813b4aceffc7f069f4797cde3175c/library/std/src/panic.rs:359:14
  51: tokio::runtime::task::harness::poll_future
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/harness.rs:520:18
  52: tokio::runtime::task::harness::Harness<T,S>::poll_inner
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/harness.rs:209:27
  53: tokio::runtime::task::harness::Harness<T,S>::poll
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/harness.rs:154:15
  54: tokio::runtime::task::raw::RawTask::poll
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/raw.rs:201:18
  55: tokio::runtime::task::UnownedTask<S>::run
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/task/mod.rs:500:9
  56: tokio::runtime::blocking::pool::Task::run
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/blocking/pool.rs:161:9
  57: tokio::runtime::blocking::pool::Inner::run
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/blocking/pool.rs:511:17
  58: tokio::runtime::blocking::pool::Spawner::spawn_thread::{{closure}}
             at ./root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.44.0/src/runtime/blocking/pool.rs:469:13

To Reproduce

services:
  risingwave-standalone:
    image: risingwavelabs/risingwave:v2.4.0
    command: "standalone --meta-opts=\" \
                    --listen-addr 0.0.0.0:5690 \
                    --advertise-addr 0.0.0.0:5690 \
                    --dashboard-host 0.0.0.0:5691 \
                    --prometheus-host 0.0.0.0:1250 \
                    --backend sql \
                    --sql-endpoint sqlite:///meta-data/metadata.db?mode=rwc \
                    --state-store hummock+s3://risingwave.us-east-1.dev \
                    --data-directory hummock_001 \
                    --config-path /risingwave.toml\" \
                 --compute-opts=\" \
                    --config-path /risingwave.toml \
                    --listen-addr 0.0.0.0:5688 \
                    --prometheus-listener-addr 0.0.0.0:1250 \
                    --advertise-addr 0.0.0.0:5688 \
                    --async-stack-trace verbose \
                    --parallelism 8 \
                    --total-memory-bytes 21474836480 \
                    --role both \
                    --meta-address http://0.0.0.0:5690 \
                    --memory-manager-target-bytes 22333829939 \" \
                 --frontend-opts=\" \
                   --config-path /risingwave.toml \
                   --listen-addr 0.0.0.0:4566 \
                   --advertise-addr 0.0.0.0:4566 \
                   --prometheus-listener-addr 0.0.0.0:1250 \
                   --health-check-listener-addr 0.0.0.0:6786 \
                   --meta-addr http://0.0.0.0:5690 \
                   --frontend-total-memory-bytes=4294967296\" \
                 --compactor-opts=\" \
                   --listen-addr 0.0.0.0:6660 \
                   --prometheus-listener-addr 0.0.0.0:1250 \
                   --advertise-addr 0.0.0.0:6660 \
                   --meta-address http://0.0.0.0:5690 \
                   --compactor-total-memory-bytes=4294967296\""
    volumes:
      - "./risingwave.toml:/risingwave.toml"
      - "meta-0:/meta-data"
    environment:
      AWS_REGION: us-east-1
      AWS_ACCESS_KEY_ID: <redacted>
      AWS_SECRET_ACCESS_KEY: <redacted>
    container_name: risingwave-standalone
    restart: always
volumes:
  meta-0:
    external: false

If change to a bucket whose name does not contain dot, it works fine.

-  --state-store hummock+s3://risingwave.us-east-1.dev
+  --state-store hummock+s3://risingwave-dev

Expected behavior

No response

How did you deploy RisingWave?

No response

The version of RisingWave

risingwavelabs/risingwave:v2.4.0

Additional context

No response

Metadata

Metadata

Assignees

Labels

type/bugType: Bug. Only for issues.

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions