VMware-SPS Service Fails to Start Due to Missing Entries in pbm.properties File
search cancel

VMware-SPS Service Fails to Start Due to Missing Entries in pbm.properties File

book

Article ID: 407304

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

  • The vmware-sps service is stopped and cannot be started manually. 
  • Check the sps.log file in /var/log/vmware/vmware-sps/ for vCenter sps logs.

    YYYY-MM-DDTHH:MM:SS [main] ERROR opId=sps-Main-484458-470 com.vmware.sps.StorageMain - Exception when running SPS service org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'httpServerEndpoint' defined in class path resource [pbm-spring-config.xml]: Could not resolve placeholder 'pbm.http.port' in value "${pbm.http.port}"; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'pbm.http.port' in value "${pbm.http.port}"

            at org.springframework.beans.factory.config.PlaceholderConfigurerSupport.doProcessProperties(PlaceholderConfigurerSupport.java:230) ~[spring-beans-5.3.42.jar:5.3.42]

            at org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.processProperties(PropertyPlaceholderConfigurer.java:211) ~[spring-beans-5.3.42.jar:5.3.42]

            at org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:86) ~[spring-beans-5.3.42.jar:5.3.42]

            at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:325)~[spring-context-5.3.42.jar:5.3.42]

            at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:183)~[spring-context-5.3.42.jar:5.3.42]

            at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:756) ~[spring-context-5.3.42.jar:5.3.42]

            at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:573) ~[spring-context-5.3.42.jar:5.3.42]

            at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:144) ~[spring-context-5.3.42.jar:5.3.42]

            at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:109) ~[spring-context-5.3.42.jar:5.3.42]

            at com.vmware.vim.storage.common.app.CommonSpringService.createSpringAppContext(CommonSpringService.java:37) ~[storage-commons-1.0.jar:?]

            at com.vmware.pbm.app.PbmLocalService.initialize(PbmLocalService.java:147) ~[pbm-1.0.jar:?]

            at com.vmware.pbm.app.PbmLocalService.<init>(PbmLocalService.java:128) ~[pbm-1.0.jar:?]

            at com.vmware.pbm.app.PbmLocalService.initInstance(PbmLocalService.java:189) ~[pbm-1.0.jar:?]

            at com.vmware.sps.StorageMain.loadPbmService(StorageMain.java:210) ~[pbm-1.0.jar:?]

            at com.vmware.sps.StorageMain.main(StorageMain.java:66) [pbm-1.0.jar:?]

    Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'pbm.http.port' in value "${pbm.http.port}"

            at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:180) ~[spring-core-5.3.42.jar:5.3.42]

            at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126) ~[spring-core-5.3.42.jar:5.3.42]

            at org.springframework.beans.factory.config.PropertyPlaceholderConfigurer$PlaceholderResolvingStringValueResolver.resolveStringValue(PropertyPlaceholderConfigurer.java:230) ~[spring-beans-5.3.42.jar:5.3.42]

            at org.springframework.beans.factory.config.BeanDefinitionVisitor.resolveStringValue(BeanDefinitionVisitor.java:296) ~[spring-beans-5.3.42.jar:5.3.42]

            at org.springframework.beans.factory.config.BeanDefinitionVisitor.resolveValue(BeanDefinitionVisitor.java:217) ~[spring-beans-5.3.42.jar:5.3.42]

            at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitGenericArgumentValues(BeanDefinitionVisitor.java:165) ~[spring-beans-5.3.42.jar:5.3.42]

            at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitBeanDefinition(BeanDefinitionVisitor.java:90) ~[spring-beans-5.3.42.jar:5.3.42]

            at org.springframework.beans.factory.config.PlaceholderConfigurerSupport.doProcessProperties(PlaceholderConfigurerSupport.java:227) ~[spring-beans-5.3.42.jar:5.3.42]

Environment

vCenter 8.x

Cause

This issue occurs due to missing values in /usr/lib/vmware-vpx/sps/conf/pbm.properties file

 

Resolution

Note: Ensure there is a valid backup/offline snapshot of the VCSA prior to implementing the workaround. Refer to VMware vCenter in Enhanced Linked Mode pre-changes snapshot (online or offline) best practice.

To resolve the issue, follow these steps:

  • Log in to VCSA via SSH and access the shell.

  • Verify if pbm.properties.upgrade exists in /usr/lib/vmware-vpx/sps/conf.

  • If pbm.properties.upgrade is present:
    • Navigate to /usr/lib/vmware-vpx/sps/conf.
    • Create a temporary directory: mkdir temp
    • Copy original and upgrade files to temp:
      • cp pbm.properties temp/
      • cp pbm.properties.upgrade temp/
    • Rename files:
      • mv pbm.properties pbm.properties.bak
      • mv pbm.properties.upgrade pbm.properties
  • If pbm.properties.upgrade is not present, copy the pbm.properties file from a working vCenter to the broken vCenter.
  • Start the vmware-sps service using below command
    • service-control --start vmware-sps