PVDC に追加されたストレージ ポリシーが「N/A」と表示される
search cancel

PVDC に追加されたストレージ ポリシーが「N/A」と表示される

book

Article ID: 412279

calendar_today

Updated On:

Products

VMware Cloud Director

Issue/Introduction

免責事項: これは英文の記事「Storage policies added to PVDC are displayed as "N/A"」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事を参照してください。

多数のデータストアが関連付けられている VCD では、PVDC に新しいストレージ ポリシーを追加した後、項目が N/A として表示される場合があります。
以下のように /opt/vmware/vcloud-director/logs/vcloud-container-info.log に、SQL UPDATE がタイムアウトしてエラーが発生した以下のログが出力されます。

2024-08-26 13:33:55,002 | ERROR | Backend-activity-pool-733193 | JDBCExceptionReporter | ERROR: canceling statement due to statement timeout
  Where: SQL statement "UPDATE cached_dgp_sc_metric AS cached
SET
requested_storage_mb = source.requested_storage_mb ,
pvdc_count = source.pvdc_count ,
disk_free_mb = source.disk_free_mb ,
disk_size_mb = source.disk_size_mb ,
disk_uncommitted_mb = source.disk_uncommitted_mb ,
disk_used_mb = source.disk_used_mb ,
disk_provisioned_mb = source.disk_provisioned_mb ,
iops_capacity = source.iops_capacity ,
iops_allocated = source.iops_allocated
FROM
dgp_sc_metrics_view AS source
WHERE
((cached.ds_vc_id = source.ds_vc_id) AND (cached.ds_moref = source.ds_moref))
AND (
cached.requested_storage_mb != source.requested_storage_mb OR
cached.pvdc_count != source.pvdc_count OR
cached.disk_free_mb != source.disk_free_mb OR
cached.disk_size_mb != source.disk_size_mb OR
cached.disk_uncommitted_mb != source.disk_uncommitted_mb OR
cached.disk_used_mb != source.disk_used_mb OR
cached.disk_provisioned_mb != source.disk_provisioned_mb OR
cached.iops_capacity != source.iops_capacity OR
cached.iops_allocated != source.iops_allocated
)"
PL/pgSQL function populate_cached_sc_metrics(integer) line 35 at SQL statement | 
2024-08-26 13:33:55,004 | WARN | Backend-activity-pool-733193 | aseCacheRefreshJob$DatabaseCacheRefreshJobActivity | [Activity Execution] Failed to execute stored procedure: populate_cached_sc_metrics - Handle: urn:uuid:########-####-####-####-############ | 
org.hibernate.HibernateException: org.hibernate.exception.GenericJDBCException: error executing work
        at com.vmware.vcloud.common.persist.Conversation.monitor(Conversation.java:584)
        at com.vmware.vcloud.common.persist.Conversation.execStoredProcedure(Conversation.java:925)
        at com.vmware.vcloud.common.persist.Conversation.execNonQueryStoredProcedure(Conversation.java:870)
        at com.vmware.vcloud.common.persist.Conversation.execNonQueryStoredProcedure(Conversation.java:861)
        at com.vmware.ssdc.backend.monitoring.DatabaseCacheRefreshJob$DatabaseCacheRefreshJobActivity$DatabaseCacheCleanerPhase$1.run(DatabaseCacheRefreshJob.java:110)
        at com.vmware.ssdc.backend.monitoring.DatabaseCacheRefreshJob$DatabaseCacheRefreshJobActivity$DatabaseCacheCleanerPhase$1.run(DatabaseCacheRefreshJob.java:106)
        at com.vmware.vcloud.common.threadpool.ThreadContextExecutor.executeImpl(ThreadContextExecutor.java:59)
        at com.vmware.vcloud.common.threadpool.ThreadContextExecutor.execute(ThreadContextExecutor.java:52)
        at com.vmware.ssdc.backend.monitoring.DatabaseCacheRefreshJob$DatabaseCacheRefreshJobActivity$DatabaseCacheCleanerPhase.invoke(DatabaseCacheRefreshJob.java:117)
        at com.vmware.vcloud.activity.executors.ActivityRunner.runPhase(ActivityRunner.java:175)
        at com.vmware.vcloud.activity.executors.ActivityRunner.run(ActivityRunner.java:112)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.hibernate.exception.GenericJDBCException: error executing work
        at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
        at org.hibernate.impl.SessionImpl.doWork(SessionImpl.java:1877)
        at jdk.internal.reflect.GeneratedMethodAccessor2887.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at com.vmware.vcloud.common.db.HibernateClassLoaderHelperBeanPostProcessor$SessionInvocationHandler.invoke(HibernateClassLoaderHelperBeanPostProcessor.java:280)
        at com.sun.proxy.$Proxy113.doWork(Unknown Source)
        at com.vmware.vcloud.common.persist.Conversation.lambda$execStoredProcedure$7(Conversation.java:926)
        at com.vmware.vcloud.common.persist.Conversation.monitor(Conversation.java:576)
        ... 15 more
Caused by: org.postgresql.util.PSQLException: ERROR: canceling statement due to statement timeout
  Where: SQL statement "UPDATE cached_dgp_sc_metric AS cached
SET
requested_storage_mb = source.requested_storage_mb ,
pvdc_count = source.pvdc_count ,
disk_free_mb = source.disk_free_mb ,
disk_size_mb = source.disk_size_mb ,
disk_uncommitted_mb = source.disk_uncommitted_mb ,
disk_used_mb = source.disk_used_mb ,
disk_provisioned_mb = source.disk_provisioned_mb ,
iops_capacity = source.iops_capacity ,
iops_allocated = source.iops_allocated
FROM
dgp_sc_metrics_view AS source
WHERE
((cached.ds_vc_id = source.ds_vc_id) AND (cached.ds_moref = source.ds_moref))
AND (
cached.requested_storage_mb != source.requested_storage_mb OR
cached.pvdc_count != source.pvdc_count OR
cached.disk_free_mb != source.disk_free_mb OR
cached.disk_size_mb != source.disk_size_mb OR
cached.disk_uncommitted_mb != source.disk_uncommitted_mb OR
cached.disk_used_mb != source.disk_used_mb OR
cached.disk_provisioned_mb != source.disk_provisioned_mb OR
cached.iops_capacity != source.iops_capacity OR
cached.iops_allocated != source.iops_allocated
)"
PL/pgSQL function populate_cached_sc_metrics(integer) line 35 at SQL statement
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2440)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2183)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:308)
        at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:441)
        at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:365)
        at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:150)
        at org.postgresql.jdbc.PgCallableStatement.executeWithFlags(PgCallableStatement.java:77)
        at org.postgresql.jdbc.PgPreparedStatement.execute(PgPreparedStatement.java:139)
        at com.vmware.vcloud.common.persist.AbstractCallableStatementWork.execute(AbstractCallableStatementWork.java:87)
        at org.hibernate.impl.SessionImpl.doWork(SessionImpl.java:1873)
        ... 22 more

Cause

この問題は、datastore_inv テーブルに 500 件を超えるエントリがある場合にのみ発生します。
VMware Cloud Director のインベントリテーブルには複合インデックスがあります。
任意のビューと複合条件を使用して SELECT または UPDATE 文を実行すると、PostgreSQL は複合インデックスを使用しないことを選択し、タイムアウトが発生する可能性があります。

Resolution

回避策:
この問題を回避するには、Broadcom VMware Cloud Foundation サポートチームに新しいケースを開いてください。詳細については、「サポートリクエストの送信方法」を参照してください。