Avamar: La interfaz de usuario y la consola de administración de Avamar obtienen una respuesta incorrecta cuando se crea o edita un grupo de respaldo
Resumen: En este artículo, se aborda un problema con la interfaz de usuario de Avamar (AUI) y la base de datos de Avamar Management Console (MCDB) en relación con un valor de columna en la tabla retention_policies. ...
Síntomas
Un intento de crear o editar un grupo de respaldo no genera respuesta:
Nothing is referenced in the Management Console Service (MCS) logs, but in the rest api logs.
A continuación se muestra el Avamar REST API log:
/usr/local/avamar/var/mc/server_log/mc-rest-api.log java.lang.IllegalArgumentException: No enum constant com.avamar.mc.api.replication.dto.DurationUnits.HOURS at java.lang.Enum.valueOf(Unknown Source) at com.avamar.mc.api.replication.dto.DurationUnits.valueOf(DurationUnits.java:3) at com.avamar.mc.api.retention.service.RetentionServiceImpl.convertRetentionPolicyDescriptor(RetentionServiceImpl.java:194) at com.avamar.mc.api.retention.service.RetentionServiceImpl.getRetentions(RetentionServiceImpl.java:65) at com.avamar.mc.api.retention.web.RetentionController.getRetentions(RetentionController.java:48) at com.avamar.mc.api.retention.web.RetentionController$$FastClassBySpringCGLIB$$5ac7ec93.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:69) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) at com.avamar.mc.api.retention.web.RetentionController$$EnhancerBySpringCGLIB$$ebae7189.getRetentions(<generated>) at sun.reflect.GeneratedMethodAccessor4160.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source)
Atención al error:
java.lang.IllegalArgumentException: No enum constant com.avamar.mc.api.replication.dto.DurationUnits.HOURS
Causa
La MCDB registró un valor de 0 en la columna de unidades de la retention_policies Tabla
Un valor de 0 en esta columna sugiere que el período de retención se mide en horas. Sin embargo, la unidad de período de retención se define mediante cuatro valores: días [1], semanas [2], meses [3] y años [4].
Java no tiene un valor constante establecido para la unidad de horas, por lo que no es un valor constante válido cuando se ejecuta enum.valueOf() método.
Puede ver DurationUnits.HOURS, donde arroja un error que indica que no existe ninguna constante de enumeración de horas.
Ejemplo: MCDB con las entradas defectuosas:
admin@avamar:~/>: psql -p 5555 mcdb psql (10.6) Type "help" for help. mcdb=# select id,name,duration,unit from retention_policies; id | name | duration | unit ------------------+------------------------------+----------+------ MONTHLY:PolicyID | Monthly Retention | 1 | 3 WEEKLY:PolicyID | Weekly Retention | 1 | 2 Default:POLICYID | Default Retention | 60 | 1 EndUser:PolicyID | End User On Demand Retention | 60 | 1 Minimal:PolicyID | Minimal Retention | 60 | 1 RP1652848159766 | Platinum | 60 | 0 <-- These 0s RP1652848162931 | Gold | 60 | 0 <-- These 0s RP1652848166086 | Silver | 60 | 0 <-- These 0s RP1652848169312 | Bronze | 60 | 0 <-- These 0s (9 rows)
Resolución
Procedimiento:
- Paso 1: Realice un respaldo de MCS.
mcserver.sh --flush
- Paso 2: Detenga MCS:
mcserver.sh --stop --force
- Paso 3: Abra la MCDB manualmente:
dbmaint.sh --db=on --dbname=mcdb
- Paso 4: Actualice el valor de la unidad de políticas de retención de 0 a 1:
psql -d mcdb -p 5555 -c "update retention_policies set unit=1 where unit=0"
- Paso 5: Iniciar la recuperación del MCS
mcserver.sh --start
- Paso 6: Asegúrese de que ahora puede agregar o editar la política de respaldo en AUI o Avamar Administrator e inicie el programador de respaldo.
Información adicional
Vea este video:
También puede ver este video en YouTube (Enlace externo)