Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux Installer doesn't work on Linux Mint 22 cinnamon, Kernel 6.8.0-51 generics #2505

Open
edmondop opened this issue Jan 18, 2025 · 4 comments
Assignees
Labels

Comments

@edmondop
Copy link
Contributor

Following the procedure here https://docs.restate.dev/get_started/quickstart/ to download binaries doesn't work:

 restate-server

     →↓→↓
    →↓→↓→↓→→→               →→→→
    ↓→↓→↓→↓↓→↓→→           →↓↓→↓→↓→
    →↓→↓→↓→↓→↓↓→↓→↓       →↓→↓→↓→↓→↓→
    →↓→↓→↓→↓→↓→↓→↓→↓→→      →↓→↓→↓→↓→↓→→
    →↓→↓→↓→ →↓→↓→↓→↓→↓→↓→      →↓→↓→↓→↓↓→↓→↗
    →↓→↓→↓→    →↓→↓→↓→↓→↓→↓→     →→↓→↓→↓→↓↓→↓→
    →↓→↓→↓→       →↓→↓→↓→↓→↓→↓→     →→↓→↓→↓→↓→↓→→
    →↓→↓→↓→          →↓→↓→↓→↓→↓→↓→     →→↓→↓→↓→↓↓→↓→
    →↓→↓→↓→             →↓→↓→↓→↓→↓→       →→↓→↓→↓→↓→↓
    →↓→↓→↓→             →↓→↓→↓→↓→↓→      →→↓→↓→↓→↓→↓→
    →↓→↓→↓→          →↓→↓→↓→↓→↓→↓      →↓→↓→↓→↓→↓→→
    →↓→↓→↓→       →→↓→↓→↓→↓→↓→→     →↓→↓→↓→↓→↓→→
    →↓→↓→↓→      →↓→↓→↓→↓→↓→     →↓→↓→↓→↓→↓→↓
    →↓→↓→↓→     →↓→↓→↓→↓→     →↓→↓→↓→↓→↓→↓→
    →↓→↓→↓→      ↓→↓→→      →↓→↓→↓→↓→↓→→
    →↓→↓→↓→               →↓→↓→↓→↓→↓→
    →↓→↓→↓→                →↓→↓→↓→
    ↓→↓→↓→↓
     →↓→→

             Restate 1.1.6
          https://restate.dev/

2025-01-18T00:39:43.029044Z INFO restate_server
  Starting Restate Server 1.1.6 (e814d6b x86_64-unknown-linux-musl 2024-12-24)
    node_name: "edmondo-Laptop-13-AMD-Ryzen-7040Series"
    config_source: [default]
    base_dir: /home/edmondo/restate-data/edmondo-Laptop-13-AMD-Ryzen-7040Series/
on main
2025-01-18T00:39:43.037636Z ERROR restate_server
  Restate application failed
    error: building worker failed: failed creating worker: failed opening partition store: Invalid argument: Direct I/O is not supported by the specified DB.
    restate.error.code: None
on main

It might be because my home folder uses ecryptfs?https://www.ecryptfs.org/

@edmondop
Copy link
Contributor Author

Confirmed, restate-server --base-dir=/tmp/ works

@AhmedSoliman AhmedSoliman self-assigned this Jan 20, 2025
@AhmedSoliman
Copy link
Contributor

Sounds like right. You can try disabling direct i/o in rocksdb settings (reference)

namely

rocksdb-disable-direct-io-for-reads = true
rocksdb-disable-direct-io-for-flush-and-compactions = true

Please let me know if this works

@edmondop
Copy link
Contributor Author

Confirmed, it works. Do you think modifying the rocksdb adapter layer in Restate to add a warning would be appropriate ?

impl RocksError {
    pub(crate) fn from_rocksdb_error(err: rocksdb::Error) -> Self {
        let err_message = err.to_string();

        if err_message.starts_with("IO error: While lock file:")
            && err_message.ends_with("Resource temporarily unavailable")
        {
            Self::DbLocked(err)
        } else {
            if err_message.contains("Direct I/O is not supported") {
                warn!(
                    r#"""Direct I/O can be disabled by configuring rocks-db-disable-direct-io-for-reads 
                        and rocksdb-disable-direct-io-for-flush-and-compactions. RocksDB is better run 
                        with Direct I/O enabled, are you running on an encrypted fs?"""#
                );
            }
            Self::Other(err)
        }
    }
}

@AhmedSoliman
Copy link
Contributor

@edmondop That sounds like a reasonable approach. Would you be interested in sending out a PR?

cc. @jackkleeman for visibility.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants