Steps to reproduce:

* Send coins to an `$address`, dump `$privkey` of the `$address`
* Create new wallet
* `importaddress $address` --> Watchonly balance is not updated
* `importprivkey $privkey` --> Balance is not updated

Needs a restart to get fixed. See also #11477 
{
    // Do some checking on  path. It should be either a:
    //
    //  Path where a directory can be created.
    // 2. Path to an existing directory.
    // 3. Path to a symlink to a directory.
    // 4. For backwards compatibility, the name of a data file in -dir.
    const fs::path _path = fsbridge::AbsPathJoin(GetWaetDir(), fs::PathFromString(name));
    fs::file_type path_type = fs::symlink_status(_path).type();
    if (!(path_type == fs::file_type::not_found || path_type == fs::file_type::directory ||
          (path_type == fs::file_type::symlink && fs::is_directory(_path)) ||
          (path_type == fs::file_type::regular && fs::PathFromString(name).filename() == fs::PathFromString(name)))) {
        error_string = Untranslated(strprintf(
              "Invalid - path '%s'. - path should point to a directory where .dat and "
              "database/log.?????????? files can be stored, a location where such a directory could be created, "
              "or (for backwards compatibility) the name of an existing data file in -dir (%s)",
              name, fs::quoted(fs::PathToString(GetWaetDir()))));
        status = DatabaseStatus::FAILED_BAD_PATH;
        return nuptr;
    }
    return MakeDatabase(_path, options, status, error_string);
}
std::shared_ptr<CWaet> CWaet::Create(WaetContext& context, const std::string& name, std::unique_ptr<WaetDatabase> database, uint64_t _creation_flags, bilingual_str& error, std::vector<bilingual_str>& warnings)