Пределы длины столбца слишком малы в схеме базы данных WSO2IS по умолчанию - PullRequest
0 голосов
/ 18 июня 2020

Я использую TenantMgtAdminService https://is.docs.wso2.com/en/latest/develop/managing-tenants-with-apis/ для добавления клиентов к моему локальному серверу WSO2IS (версия 5.10.0 с postgresql). Я заметил следующее исключение на сервере при установке wso2is-admin@foodcompanyad123.com (который является действительным, но длиннее 31 символа адреса электронной почты) для tenantInfoBean.admin.

Caused by: java.sql.BatchUpdateException: Batch entry 5 INSERT INTO REG_LOG (REG_PATH, REG_USER_ID, REG_LOGGED_TIME, REG_ACTION, REG_ACTION_DATA, REG_TENANT_ID) VALUES ('/_system/governance/permission', 'wso2is-admin@foodcompanyad123.com', '2020-06-17 13:54:15.776+03', 0, NULL, 9) was aborted: ERROR: value too long for type character varying(31) Call getNextException to see other errors in the batch.
 at org.postgresql.jdbc.BatchResultHandler.handleError(BatchResultHandler.java:154)
 at org.postgresql.core.ResultHandlerDelegate.handleError(ResultHandlerDelegate.java:50)
 at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2269)
 at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:511)
 at org.postgresql.jdbc.PgStatement.internalExecuteBatch(PgStatement.java:851)
 at org.postgresql.jdbc.PgStatement.executeBatch(PgStatement.java:874)
 at org.postgresql.jdbc.PgPreparedStatement.executeBatch(PgPreparedStatement.java:1569)
 at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498)
 at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
 at com.sun.proxy.$Proxy53.executeBatch(Unknown Source)
 at org.wso2.carbon.registry.core.jdbc.dao.JDBCLogsDAO.addLogRecords(JDBCLogsDAO.java:159)
 ... 3 more
Caused by: org.postgresql.util.PSQLException: ERROR: value too long for type character varying(31)
 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2533)
 at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2268)
 ... 13 more

Вызов addTenant () также генерирует следующее исключение, если длина имени пользователя admin плюс символ '@' плюс домен клиента (например, wso2is-admin@foodcompanyad123.com@foodcompanyad123.com) превышает 45 символов, как показано в следующей трассировке стека.

TID: [-1234] [TenantMgtAdminService] [2020-06-17 14:26:25,843] [9a69c7e4-661f-4713-b500-9f7e850f5c0d] ERROR {org.wso2.carbon.identity.workflow.impl.listener.WorkflowImplTenantMgtListener} - Error occurred while adding default bps profile for tenant: gondor-pizza-4.fts org.wso2.carbon.identity.workflow.impl.WorkflowImplException: Error when executing the sql query INSERT INTO WF_BPS_PROFILE(PROFILE_NAME, HOST_URL_MANAGER, HOST_URL_WORKER, USERNAME, PASSWORD, TENANT_ID) VALUES (?, ?, ?, ?, ?, ?)
 at org.wso2.carbon.identity.workflow.impl.dao.BPSProfileDAO.addProfile(BPSProfileDAO.java:75)
 at org.wso2.carbon.identity.workflow.impl.WorkflowImplServiceImpl.addBPSProfile(WorkflowImplServiceImpl.java:89)
...
...
...
Caused by: org.postgresql.util.PSQLException: ERROR: value too long for type character varying(45)
 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2533)

Связанные на второй график выше, я обнаружил эту проблему https://github.com/wso2/product-is/issues/5460, которая остается открытой.

Как лучше всего решить эти проблемы? Нужно ли мне изменять схему, чтобы увеличить лимиты? Есть ли другой способ?

1 Ответ

1 голос
/ 18 июня 2020

У вас должна быть возможность увеличить длину столбца, вызывающего нарушение, без проблем с функциональностью. Однако увеличение длины столбца сверх заданных значений по умолчанию приведет к небольшому снижению производительности, так как размер индекса в столбце также увеличивается. ваши критические функции после увеличения длины столбца для любых столбцов-нарушителей.

...