現象
Bir yedekleme grubu oluşturma veya düzenleme girişimi yanıt alınamaz.
Management Console Hizmeti (MCS) günlüklerinde hiçbir şey belirtilmez, ancak rest api günlüklerinde belirtilir.
Aşağıda Avamar REST API günlüğü gösterilmektedir.
/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)
Hataya dikkat:
java.lang.IllegalArgumentException: No enum constant com.avamar.mc.api.replication.dto.DurationUnits.HOURS
原因
MCDB, retention_policies tablosunun birim sütununda 0 değerini kaydetti.
Bu sütundaki 0 değeri, saklama süresinin saat cinsinden ölçüldüğünü gösterir. Ancak, saklama süresi birimi dört değerle tanımlanır: gün [1], hafta [2], ay [3] ve yıl [4].
Java'nın saat birimi için ayarlanmış sabit bir değeri yoktur, bu nedenle enum.valueOf() yöntemini çalıştırırken geçerli bir sabit değer değildir.
DurationUnits.HOURS'u görebilirsiniz, burada saatlerin numaralandırma sabiti olmadığını belirten bir hata oluşturur.
Örnek:
Hatalı girişleri olan MCDB
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)
解決方法
1 Adım:
MCS'nin yedeğini alın.
mcserver.sh --flush
2 Adım:
MCS'yi durdurun.
mcserver.sh --stop --force
3 Adım:
MCDB'yi manuel olarak açın.
dbmaint.sh --db=on --dbname=mcdb
4 Adım:
Saklama politikaları biriminin değerini 0'dan 1'e güncelleştirin.
psql -d mcdb -p 5555 -c "update retention_policies set unit=1 where unit=0"
5 Adım:
MCS'yi başlatın.
mcserver.sh --start
6 Adım:
Artık AUI veya Avamar Administrator'da yedekleme politikası ekleyip düzenleyebildiğinizden emin olun ve yedekleme zamanlayıcısını başlatın.
Bu videoyu izleyin:
Bu videoyu
YouTube'da da görüntüleyebilirsiniz.
対象製品
Avamar