workerDispatchMsg = ({ tenant, ...msg }) => {
  if (tenant) {
    db.runWithTenant(tenant, () => workerDispatchMsg(msg));
    return;
  }

  if (msg.refresh_plugin_cfg) {
    Plugin.findOne({ name: msg.refresh_plugin_cfg }).then((plugin) => {
      if (plugin) loadPlugin(plugin);
    });
  }
  if (!getState()) {
    console.error("no State for tenant", tenant);
    return;
  }
  if (msg.refresh) getState()[`refresh_${msg.refresh}`](true);
  if (msg.createTenant) {
    const tenant_template = getState().getConfig("tenant_template");
    add_tenant(msg.createTenant);
    create_tenant({
      t: msg.createTenant,
      plugin_loader: loadAllPlugins,
      noSignalOrDB: true,
      tenant_template,
    });
    db.runWithTenant(msg.createTenant, async () => {
      getState().refresh(true);
    });
  }
  if (msg.installPlugin) {
    loadAndSaveNewPlugin(msg.installPlugin, msg.force, true);
  }
  if (msg.restart_tenant) restart_tenant(loadAllPlugins);
  if (msg.removePlugin) getState().remove_plugin(msg.removePlugin, true);
}
@param {object} opts
@param {object} opts.tenant
@param {...*} opts.msg
@returns {void}