アーティクル - CS339405
Windchill PDMLink で REST API「/search/objects」を呼び出すと、ワイルドカード検索が実行され続けます。
修正日: 21-Jun-2024
適用対象
- Windchill PDMLink 11.1 M020 to 12.1
- Windchill Navigate (formerly ThingWorx Navigate) 1.8.0 to 9.3
説明
- REST API /search/objectsを呼び出すとワイルドカード検索が実行され続ける
- 例えば
- Windchill Advanced Searchで*test*を検索すると、数百のオブジェクトが返されます。
- 例えば
- 以下の条件で/search/objectsを呼び出すと完了しません
"$filter": ((substringof(number,'test')) or (substringof(name,'test'))) "$select": last_updated,objName,objNumber,PrimaryContentExtension,state,twodthumbnail,Id "typeId": wt.part.WTPart "queryLimit": 503
- Windchill パフォーマンス テーブルには、次のスタック トレースが実行を継続する MethodContext が表示されます。
"ajp-nio-127.0.0.1-8010-exec-4" Id=77 RUNNABLE Blocked (cnt): 38794; Waited (cnt): 632 at sun.nio.ch.FileDispatcherImpl.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) at sun.nio.ch.IOUtil.read(IOUtil.java:197) at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) at oracle.net.nt.TimeoutSocketChannel.read(TimeoutSocketChannel.java:144) at oracle.net.ns.NIOHeader.readHeaderBuffer(NIOHeader.java:82) at oracle.net.ns.NIOPacket.readFromSocketChannel(NIOPacket.java:139) at oracle.net.ns.NIOPacket.readFromSocketChannel(NIOPacket.java:101) at oracle.net.ns.NIONSDataChannel.readDataFromSocketChannel(NIONSDataChannel.java:80) at oracle.jdbc.driver.T4CMAREngineNIO.prepareForReading(T4CMAREngineNIO.java:98) at oracle.jdbc.driver.T4CMAREngineNIO.unmarshalUB1(T4CMAREngineNIO.java:534) at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:485) at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:252) at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:612) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:226) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:59) at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:747) at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:904) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1082) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3780) at oracle.jdbc.driver.T4CPreparedStatement.executeInternal(T4CPreparedStatement.java:1343) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3822) at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1165) at wt.pds.AbstractDatastoreMetaData.getIndexColumnFunctionExpressions(AbstractDatastoreMetaData.java:238) at wt.pds.oracle81.OracleMetaData.getIndexColumnFunctionExpressions(OracleMetaData.java:42) at wt.pds.AbstractDatastoreMetaData._getIndexColumnFunctionExpressions(AbstractDatastoreMetaData.java:349) at wt.pds.AbstractDatastoreMetaData.isIndexColumn(AbstractDatastoreMetaData.java:123) at wt.pds.AbstractDatastoreMetaData.getIndexColumnPrefixType(AbstractDatastoreMetaData.java:66) at com.ptc.core.query.server.criteria.CriteriaUtil.getPrefixType(CriteriaUtil.java:2314) at com.ptc.core.query.server.criteria.CriteriaUtil.getWhereExpression(CriteriaUtil.java:1720) at com.ptc.core.query.server.criteria.CriteriaUtil.getWhereExpression(CriteriaUtil.java:985) at com.ptc.core.query.server.criteria.ModeledAttributeCriteriaHandler.buildWhere(ModeledAttributeCriteriaHandler.java:112) at com.ptc.core.query.server.criteria.LogicalCriteriaHandler.buildWhere(LogicalCriteriaHandler.java:150) at com.ptc.core.query.server.criteria.LogicalCriteriaHandler.buildWhere(LogicalCriteriaHandler.java:150) at com.ptc.core.query.server.criteria.LogicalCriteriaHandler.buildWhere(LogicalCriteriaHandler.java:150) at com.ptc.core.query.server.criteria.CriteriaUtil.appendCriteria(CriteriaUtil.java:197) at com.ptc.core.query.server.criteria.CriteriaUtil.appendCriteria(CriteriaUtil.java:181) at com.ptc.core.query.server.impl.BasicQueryService.buildQuerySpec(BasicQueryService.java:1763) at com.ptc.core.query.server.impl.BasicQueryService.buildStatement(BasicQueryService.java:1465) at com.ptc.core.query.server.impl.BasicQueryService.query(BasicQueryService.java:358) at com.ptc.core.query.command.server.QueryCommandDelegate.doExecution(QueryCommandDelegate.java:159) at com.ptc.core.command.common.delegate.AbstractCommandDelegate.execute(AbstractCommandDelegate.java:216) at com.ptc.core.command.common.CommandDelegateForwarder._remoteExecute(CommandDelegateForwarder.java:292) at com.ptc.core.command.common.CommandDelegateForwarder.remoteExecute(CommandDelegateForwarder.java:240) at com.ptc.core.command.common.CommandDelegateForwarder.execute(CommandDelegateForwarder.java:202) at com.ptc.core.command.common.bean.AbstractServerCommand.execute(AbstractServerCommand.java:202) at com.ptc.windchill.enterprise.search.mvc.service.DbSearchService.queryDBServer(DbSearchService.java:368) at com.ptc.windchill.enterprise.search.mvc.service.DbSearchService.doGetPage(DbSearchService.java:295) at com.ptc.windchill.enterprise.search.mvc.service.AbstractQueryService.getPage(AbstractQueryService.java:95) at com.ptc.windchill.enterprise.search.mvc.service.WindchillSearchResultInputStream.read(WindchillSearchResultInputStream.java:63) at com.ptc.windchill.connected.plm.webservice.SearchUtils.executeSearch(SearchUtils.java:562) at com.ptc.windchill.connected.plm.webservice.SearchWebService.searchObjects(SearchWebService.java:187) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137) at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:237) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:377) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:200) at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at ...internalDoFilter() at ...doFilter() at wt.licenseusage.licensing.LicenseFilter.doFilter(LicenseFilter.java:47) at ...internalDoFilter() at ...doFilter() at com.ptc.jws.servlet.filter.WsdlServletFilter.doFilter(WsdlServletFilter.java:61) at ...internalDoFilter() at ...doFilter() at com.ptc.core.ui.validation.URLValidationFilter.doFilter(URLValidationFilter.java:85) at ...internalDoFilter() at ...doFilter() at wt.httpgw.filter.WTContextBeanFilter.doWithWtContextBeanHandler(WTContextBeanFilter.java:104) at wt.httpgw.filter.WTContextBeanFilter.doFilter(WTContextBeanFilter.java:58) at ...internalDoFilter() at ...doFilter() at wt.servlet.CompressionFilter.doFilter(CompressionFilter.java:301) at ...internalDoFilter() at ...doFilter() at wt.servlet.RequestInterrupter.doFilter(RequestInterrupter.java:335) at ...internalDoFilter() at ...doFilter() at wt.servlet.ServletRequestMonitor.doFilter(ServletRequestMonitor.java:1660) at wt.servlet.ServletRequestMonitorFilter.doFilter(ServletRequestMonitorFilter.java:56) at ...internalDoFilter() at ...doFilter() at ....
- 次のSQLクエリは、上記の長時間実行されるMethodContextに関連しています。
SELECT COLUMN_EXPRESSION FROM dba_ind_expressions WHERE INDEX_OWNER = ? AND TABLE_NAME = ?[xxx, WTPARTMASTER]
- Windchill クラスターから Thingworx への検索リクエストの送信に時間がかかる
最新バージョンはこちらを参照ください CS339405