### Environment

* Dubbo version: 3.2.0
* Operating System version: macos10.15.7
* Java version: 1.8

### Steps to reproduce this issue

使用各种方式导致Module启动失败。

### Expected Behavior

Module启动失败，不暴露MetadataService。

即不执行DefaultApplicationDeployer#prepareApplicationInstance。

### Actual Behavior

由于org.apache.dubbo.config.deploy.DefaultModuleDeployer#onModuleFailed传入错误的状态STARTED，导致执行DefaultApplicationDeployer#prepareApplicationInstance。

```java
private void onModuleFailed(String msg, Throwable ex) {
    try {
        setFailed(ex);
        logger.error(CONFIG_FAILED_START_MODEL, "", "", "Model start failed: " + msg, ex);
        applicationDeployer.notifyModuleChanged(moduleModel, DeployState.STARTED);
    } finally {
        completeStartFuture(false);
    }
}
```


synchronized (this) {
            if (initialized) {
                return;
            }
            onInitialize();
            loadConfigs();
            
            ModuleConfig moduleConfig = moduleModel.getConfigManager().getModule().orElseThrow(() -> new IllegalStateException("Default module config is not initialized"));
            exportAsync = Boolean.TRUE.equals(moduleConfig.getExportAsync());
            referAsync = Boolean.TRUE.equals(moduleConfig.getReferAsync());
            
            background = moduleConfig.getBackground();
            if (background == null) {
                
                background = isExportBackground() || isReferBackground();
            }
            initialized = true;
            if (logger.isInfoEnabled()) {
                logger.info(getIdentifier() + " has been initialized!");
            }
        }
    }
    @Override
    public Future start() throws IllegalStateException {
        
        applicationDeployer.initialize();
        return startSync();
    }
    private synchronized Future startSync() throws IllegalStateException {
        if (isStopping() || isStopped() || isFailed()) {