[JBoss JIRA] Created: (TEIID-465) Error message in server process log refers to binding by UUID, not name
by Paul Nittel (JIRA)
Error message in server process log refers to binding by UUID, not name
-----------------------------------------------------------------------
Key: TEIID-465
URL: https://jira.jboss.org/jira/browse/TEIID-465
Project: Teiid
Issue Type: Bug
Components: Server
Environment: RHEL 5, MetaMatrix 5.5.3
Reporter: Paul Nittel
Assignee: Steven Hawkins
While examining the MMProcess log file (NIAP CCE testing), I noticed these errors. They won't help a user/administrator since they don't refer to the connector bindings by name.
Apr 03, 2009 16:12:34.228 [SocketWorkerQueue_Worker_24|0] ERROR <DQP|0> Received exception processing request:
com.metamatrix.api.exception.MetaMatrixComponentException[0]: Cannot find service instance of type <mmuuid:6d252400-1ffb-1131-b913-ad41f8c5e080>ServiceSelectionPolicy: ROUND_ROBIN_LOCAL_SELECTION_POLICY: No services found.
at com.metamatrix.platform.service.proxy.ServiceProxy.getNextInstance(ServiceProxy.java:89)
at com.metamatrix.platform.service.proxy.SingleInvokationProxy.invoke(SingleInvokationProxy.java:49)
at $Proxy12.getConnectorID(Unknown Source)
at com.metamatrix.server.connector.comm.ConnectorResourceFinder.findResources(ConnectorResourceFinder.java:66)
at com.metamatrix.server.connector.comm.ConnectorServerConnection.selectServerInstance(ConnectorServerConnection.java:73)
at com.metamatrix.server.dqp.service.PlatformDataService.selectConnector(PlatformDataService.java:72)
at com.metamatrix.dqp.internal.process.capabilities.ConnectorCapabilitiesFinder.findCapabilities(ConnectorCapabilitiesFinder.java:41)
at com.metamatrix.dqp.internal.process.capabilities.SharedCachedFinder.findCapabilities(SharedCachedFinder.java:47)
at com.metamatrix.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.loadCapabilities(CriteriaCapabilityValidatorVisitor.java:72)
at com.metamatrix.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.<init>(CriteriaCapabilityValidatorVisitor.java:62)
at com.metamatrix.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.canPushLanguageObject(CriteriaCapabilityValidatorVisitor.java:547)
at com.metamatrix.query.optimizer.relational.rules.RuleRaiseAccess.canPushSymbol(RuleRaiseAccess.java:633)
at com.metamatrix.query.optimizer.relational.rules.RuleRaiseAccess.raiseAccessNode(RuleRaiseAccess.java:123)
at com.metamatrix.query.optimizer.relational.rules.RuleRaiseAccess.execute(RuleRaiseAccess.java:69)
at com.metamatrix.query.optimizer.relational.RelationalPlanner.executeRules(RelationalPlanner.java:487)
at com.metamatrix.query.optimizer.relational.RelationalPlanner.optimize(RelationalPlanner.java:122)
at com.metamatrix.query.optimizer.QueryOptimizer.optimize(QueryOptimizer.java:222)
at com.metamatrix.query.optimizer.QueryOptimizer.recursiveOptimize(QueryOptimizer.java:196)
at com.metamatrix.query.optimizer.QueryOptimizer.recursiveOptimize(QueryOptimizer.java:179)
at com.metamatrix.query.optimizer.QueryOptimizer.optimizePlan(QueryOptimizer.java:106)
at com.metamatrix.dqp.internal.process.Request.initProcessPlan(Request.java:790)
at com.metamatrix.dqp.internal.process.Request.generatePlan(Request.java:684)
at com.metamatrix.dqp.internal.process.Request.processRequest(Request.java:832)
at com.metamatrix.dqp.internal.process.DQPCore.processRequestMessage(DQPCore.java:304)
at com.metamatrix.dqp.internal.process.MessageHandler.process(MessageHandler.java:92)
at com.metamatrix.dqp.message.RequestMessage.process(RequestMessage.java:479)
at com.metamatrix.dqp.internal.process.MessageHandler.processMessage(MessageHandler.java:64)
at com.metamatrix.dqp.internal.process.DQPCore.process(DQPCore.java:268)
at com.metamatrix.dqp.internal.application.DQPComponent.processInternal(DQPComponent.java:119)
at com.metamatrix.dqp.internal.application.DQPComponent.access$000(DQPComponent.java:48)
at com.metamatrix.dqp.internal.application.DQPComponent$InternalServerListener.receive(DQPComponent.java:196)
at com.metamatrix.dqp.internal.application.DQPComponent.receive(DQPComponent.java:263)
at com.metamatrix.server.query.service.QueryServiceEngine.receive(QueryServiceEngine.java:498)
at com.metamatrix.common.comm.platform.server.FilteringMessageServiceAgent.receive(FilteringMessageServiceAgent.java:40)
at com.metamatrix.common.comm.platform.server.MessageFilterServiceAgent.receive(MessageFilterServiceAgent.java:81)
at com.metamatrix.platform.admin.apiimpl.RuntimeStateListenerAgent.receive(RuntimeStateListenerAgent.java:90)
at com.metamatrix.common.comm.platform.socket.SocketVMController.receive(SocketVMController.java:377)
at com.metamatrix.common.comm.platform.socket.server.ServerAsynchronousWorkItem.process(ServerAsynchronousWorkItem.java:35)
at com.metamatrix.common.comm.platform.socket.server.SocketServerWorker.process(SocketServerWorker.java:41)
at com.metamatrix.common.queue.QueueWorker.run(QueueWorker.java:64)
Caused by: ServiceSelectionPolicy: ROUND_ROBIN_LOCAL_SELECTION_POLICY: No services found.
at com.metamatrix.platform.service.proxy.RoundRobinLocalSelectionPolicy.getNextInstance(RoundRobinLocalSelectionPolicy.java:105)
at com.metamatrix.platform.service.proxy.ServiceProxy.getNextInstance(ServiceProxy.java:84)
at com.metamatrix.platform.service.proxy.SingleInvokationProxy.invoke(SingleInvokationProxy.java:49)
at $Proxy12.getConnectorID(Unknown Source)
at com.metamatrix.server.connector.comm.ConnectorResourceFinder.findResources(ConnectorResourceFinder.java:66)
at com.metamatrix.server.connector.comm.ConnectorServerConnection.selectServerInstance(ConnectorServerConnection.java:73)
at com.metamatrix.server.dqp.service.PlatformDataService.selectConnector(PlatformDataService.java:72)
at com.metamatrix.dqp.internal.process.capabilities.ConnectorCapabilitiesFinder.findCapabilities(ConnectorCapabilitiesFinder.java:41)
at com.metamatrix.dqp.internal.process.capabilities.SharedCachedFinder.findCapabilities(SharedCachedFinder.java:47)
at com.metamatrix.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.loadCapabilities(CriteriaCapabilityValidatorVisitor.java:72)
at com.metamatrix.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.<init>(CriteriaCapabilityValidatorVisitor.java:62)
at com.metamatrix.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.canPushLanguageObject(CriteriaCapabilityValidatorVisitor.java:547)
at com.metamatrix.query.optimizer.relational.rules.RuleRaiseAccess.canPushSymbol(RuleRaiseAccess.java:633)
at com.metamatrix.query.optimizer.relational.rules.RuleRaiseAccess.raiseAccessNode(RuleRaiseAccess.java:123)
at com.metamatrix.query.optimizer.relational.rules.RuleRaiseAccess.execute(RuleRaiseAccess.java:69)
at com.metamatrix.query.optimizer.relational.RelationalPlanner.executeRules(RelationalPlanner.java:487)
at com.metamatrix.query.optimizer.relational.RelationalPlanner.optimize(RelationalPlanner.java:122)
at com.metamatrix.query.optimizer.QueryOptimizer.optimize(QueryOptimizer.java:222)
at com.metamatrix.query.optimizer.QueryOptimizer.recursiveOptimize(QueryOptimizer.java:196)
at com.metamatrix.query.optimizer.QueryOptimizer.recursiveOptimize(QueryOptimizer.java:179)
at com.metamatrix.query.optimizer.QueryOptimizer.optimizePlan(QueryOptimizer.java:106)
at com.metamatrix.dqp.internal.process.Request.initProcessPlan(Request.java:790)
at com.metamatrix.dqp.internal.process.Request.generatePlan(Request.java:684)
at com.metamatrix.dqp.internal.process.Request.processRequest(Request.java:832)
at com.metamatrix.dqp.internal.process.DQPCore.processRequestMessage(DQPCore.java:304)
at com.metamatrix.dqp.internal.process.MessageHandler.process(MessageHandler.java:92)
at com.metamatrix.dqp.message.RequestMessage.process(RequestMessage.java:479)
at com.metamatrix.dqp.internal.process.MessageHandler.processMessage(MessageHandler.java:64)
at com.metamatrix.dqp.internal.process.DQPCore.process(DQPCore.java:268)
at com.metamatrix.dqp.internal.application.DQPComponent.processInternal(DQPComponent.java:119)
at com.metamatrix.dqp.internal.application.DQPComponent.access$000(DQPComponent.java:48)
at com.metamatrix.dqp.internal.application.DQPComponent$InternalServerListener.receive(DQPComponent.java:196)
at com.metamatrix.dqp.internal.application.DQPComponent.receive(DQPComponent.java:263)
at com.metamatrix.server.query.service.QueryServiceEngine.receive(QueryServiceEngine.java:498)
at com.metamatrix.common.comm.platform.server.FilteringMessageServiceAgent.receive(FilteringMessageServiceAgent.java:40)
at com.metamatrix.common.comm.platform.server.MessageFilterServiceAgent.receive(MessageFilterServiceAgent.java:81)
at com.metamatrix.platform.admin.apiimpl.RuntimeStateListenerAgent.receive(RuntimeStateListenerAgent.java:90)
at com.metamatrix.common.comm.platform.socket.SocketVMController.receive(SocketVMController.java:377)
at com.metamatrix.common.comm.platform.socket.server.ServerAsynchronousWorkItem.process(ServerAsynchronousWorkItem.java:35)
at com.metamatrix.common.comm.platform.socket.server.SocketServerWorker.process(SocketServerWorker.java:41)
at com.metamatrix.common.queue.QueueWorker.run(QueueWorker.java:64)
Apr 03, 2009 16:12:34.228 [SocketWorkerQueue_Worker_24|0.1] ERROR <com.metamatrix.core|0> Cannot find service instance of type <mmuuid:6d252400-1ffb-1131-b913-ad41f8c5e080>
Cannot find service instance of type <mmuuid:6d252400-1ffb-1131-b913-ad41f8c5e080>ServiceSelectionPolicy: ROUND_ROBIN_LOCAL_SELECTION_POLICY: No services found.
at com.metamatrix.platform.service.proxy.ServiceProxy.getNextInstance(ServiceProxy.java:89)
at com.metamatrix.platform.service.proxy.SingleInvokationProxy.invoke(SingleInvokationProxy.java:49)
at $Proxy12.getConnectorID(Unknown Source)
at com.metamatrix.server.connector.comm.ConnectorResourceFinder.findResources(ConnectorResourceFinder.java:66)
at com.metamatrix.server.connector.comm.ConnectorServerConnection.selectServerInstance(ConnectorServerConnection.java:73)
at com.metamatrix.server.dqp.service.PlatformDataService.selectConnector(PlatformDataService.java:72)
at com.metamatrix.dqp.internal.process.capabilities.ConnectorCapabilitiesFinder.findCapabilities(ConnectorCapabilitiesFinder.java:41)
at com.metamatrix.dqp.internal.process.capabilities.SharedCachedFinder.findCapabilities(SharedCachedFinder.java:47)
at com.metamatrix.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.loadCapabilities(CriteriaCapabilityValidatorVisitor.java:72)
at com.metamatrix.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.<init>(CriteriaCapabilityValidatorVisitor.java:62)
at com.metamatrix.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.canPushLanguageObject(CriteriaCapabilityValidatorVisitor.java:547)
at com.metamatrix.query.optimizer.relational.rules.RuleRaiseAccess.canPushSymbol(RuleRaiseAccess.java:633)
at com.metamatrix.query.optimizer.relational.rules.RuleRaiseAccess.raiseAccessNode(RuleRaiseAccess.java:123)
at com.metamatrix.query.optimizer.relational.rules.RuleRaiseAccess.execute(RuleRaiseAccess.java:69)
at com.metamatrix.query.optimizer.relational.RelationalPlanner.executeRules(RelationalPlanner.java:487)
at com.metamatrix.query.optimizer.relational.RelationalPlanner.optimize(RelationalPlanner.java:122)
at com.metamatrix.query.optimizer.QueryOptimizer.optimize(QueryOptimizer.java:222)
at com.metamatrix.query.optimizer.QueryOptimizer.recursiveOptimize(QueryOptimizer.java:196)
at com.metamatrix.query.optimizer.QueryOptimizer.recursiveOptimize(QueryOptimizer.java:179)
at com.metamatrix.query.optimizer.QueryOptimizer.optimizePlan(QueryOptimizer.java:106)
at com.metamatrix.dqp.internal.process.Request.initProcessPlan(Request.java:790)
at com.metamatrix.dqp.internal.process.Request.generatePlan(Request.java:684)
at com.metamatrix.dqp.internal.process.Request.processRequest(Request.java:832)
at com.metamatrix.dqp.internal.process.DQPCore.processRequestMessage(DQPCore.java:304)
at com.metamatrix.dqp.internal.process.MessageHandler.process(MessageHandler.java:92)
at com.metamatrix.dqp.message.RequestMessage.process(RequestMessage.java:479)
at com.metamatrix.dqp.internal.process.MessageHandler.processMessage(MessageHandler.java:64)
at com.metamatrix.dqp.internal.process.DQPCore.process(DQPCore.java:268)
at com.metamatrix.dqp.internal.application.DQPComponent.processInternal(DQPComponent.java:119)
at com.metamatrix.dqp.internal.application.DQPComponent.access$000(DQPComponent.java:48)
at com.metamatrix.dqp.internal.application.DQPComponent$InternalServerListener.receive(DQPComponent.java:196)
at com.metamatrix.dqp.internal.application.DQPComponent.receive(DQPComponent.java:263)
at com.metamatrix.server.query.service.QueryServiceEngine.receive(QueryServiceEngine.java:498)
at com.metamatrix.common.comm.platform.server.FilteringMessageServiceAgent.receive(FilteringMessageServiceAgent.java:40)
at com.metamatrix.common.comm.platform.server.MessageFilterServiceAgent.receive(MessageFilterServiceAgent.java:81)
at com.metamatrix.platform.admin.apiimpl.RuntimeStateListenerAgent.receive(RuntimeStateListenerAgent.java:90)
at com.metamatrix.common.comm.platform.socket.SocketVMController.receive(SocketVMController.java:377)
at com.metamatrix.common.comm.platform.socket.server.ServerAsynchronousWorkItem.process(ServerAsynchronousWorkItem.java:35)
at com.metamatrix.common.comm.platform.socket.server.SocketServerWorker.process(SocketServerWorker.java:41)
at com.metamatrix.common.queue.QueueWorker.run(QueueWorker.java:64)
Caused by: ServiceSelectionPolicy: ROUND_ROBIN_LOCAL_SELECTION_POLICY: No services found.
at com.metamatrix.platform.service.proxy.RoundRobinLocalSelectionPolicy.getNextInstance(RoundRobinLocalSelectionPolicy.java:105)
at com.metamatrix.platform.service.proxy.ServiceProxy.getNextInstance(ServiceProxy.java:84)
at com.metamatrix.platform.service.proxy.SingleInvokationProxy.invoke(SingleInvokationProxy.java:49)
at $Proxy12.getConnectorID(Unknown Source)
at com.metamatrix.server.connector.comm.ConnectorResourceFinder.findResources(ConnectorResourceFinder.java:66)
at com.metamatrix.server.connector.comm.ConnectorServerConnection.selectServerInstance(ConnectorServerConnection.java:73)
at com.metamatrix.server.dqp.service.PlatformDataService.selectConnector(PlatformDataService.java:72)
at com.metamatrix.dqp.internal.process.capabilities.ConnectorCapabilitiesFinder.findCapabilities(ConnectorCapabilitiesFinder.java:41)
at com.metamatrix.dqp.internal.process.capabilities.SharedCachedFinder.findCapabilities(SharedCachedFinder.java:47)
at com.metamatrix.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.loadCapabilities(CriteriaCapabilityValidatorVisitor.java:72)
at com.metamatrix.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.<init>(CriteriaCapabilityValidatorVisitor.java:62)
at com.metamatrix.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.canPushLanguageObject(CriteriaCapabilityValidatorVisitor.java:547)
at com.metamatrix.query.optimizer.relational.rules.RuleRaiseAccess.canPushSymbol(RuleRaiseAccess.java:633)
at com.metamatrix.query.optimizer.relational.rules.RuleRaiseAccess.raiseAccessNode(RuleRaiseAccess.java:123)
at com.metamatrix.query.optimizer.relational.rules.RuleRaiseAccess.execute(RuleRaiseAccess.java:69)
at com.metamatrix.query.optimizer.relational.RelationalPlanner.executeRules(RelationalPlanner.java:487)
at com.metamatrix.query.optimizer.relational.RelationalPlanner.optimize(RelationalPlanner.java:122)
at com.metamatrix.query.optimizer.QueryOptimizer.optimize(QueryOptimizer.java:222)
at com.metamatrix.query.optimizer.QueryOptimizer.recursiveOptimize(QueryOptimizer.java:196)
at com.metamatrix.query.optimizer.QueryOptimizer.recursiveOptimize(QueryOptimizer.java:179)
at com.metamatrix.query.optimizer.QueryOptimizer.optimizePlan(QueryOptimizer.java:106)
at com.metamatrix.dqp.internal.process.Request.initProcessPlan(Request.java:790)
at com.metamatrix.dqp.internal.process.Request.generatePlan(Request.java:684)
at com.metamatrix.dqp.internal.process.Request.processRequest(Request.java:832)
at com.metamatrix.dqp.internal.process.DQPCore.processRequestMessage(DQPCore.java:304)
at com.metamatrix.dqp.internal.process.MessageHandler.process(MessageHandler.java:92)
at com.metamatrix.dqp.message.RequestMessage.process(RequestMessage.java:479)
at com.metamatrix.dqp.internal.process.MessageHandler.processMessage(MessageHandler.java:64)
at com.metamatrix.dqp.internal.process.DQPCore.process(DQPCore.java:268)
at com.metamatrix.dqp.internal.application.DQPComponent.processInternal(DQPComponent.java:119)
at com.metamatrix.dqp.internal.application.DQPComponent.access$000(DQPComponent.java:48)
at com.metamatrix.dqp.internal.application.DQPComponent$InternalServerListener.receive(DQPComponent.java:196)
at com.metamatrix.dqp.internal.application.DQPComponent.receive(DQPComponent.java:263)
at com.metamatrix.server.query.service.QueryServiceEngine.receive(QueryServiceEngine.java:498)
at com.metamatrix.common.comm.platform.server.FilteringMessageServiceAgent.receive(FilteringMessageServiceAgent.java:40)
at com.metamatrix.common.comm.platform.server.MessageFilterServiceAgent.receive(MessageFilterServiceAgent.java:81)
at com.metamatrix.platform.admin.apiimpl.RuntimeStateListenerAgent.receive(RuntimeStateListenerAgent.java:90)
at com.metamatrix.common.comm.platform.socket.SocketVMController.receive(SocketVMController.java:377)
at com.metamatrix.common.comm.platform.socket.server.ServerAsynchronousWorkItem.process(ServerAsynchronousWorkItem.java:35)
at com.metamatrix.common.comm.platform.socket.server.SocketServerWorker.process(SocketServerWorker.java:41)
at com.metamatrix.common.queue.QueueWorker.run(QueueWorker.java:64)
Apr 03, 2009 16:12:34.269 [SocketWorkerQueue_Worker_24|0] INFO <AUDIT_ADMIN|0> Administrator [metamatrixadmin], session [2888] requesting access which requires role [Admin.ProductAdmin] to method [synchronizeSystem].
Apr 03, 2009 16:12:34.269 [SocketWorkerQueue_Worker_24|0] INFO <AUDIT_ADMIN|0> Administrator [metamatrixadmin], session [2888] granted access to method [synchronizeSystem].
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 6 months
[JBoss JIRA] Created: (TEIID-429) Use DataSources in creating the ConnectorBindings instead of creating one using the Driver
by Ramesh Reddy (JIRA)
Use DataSources in creating the ConnectorBindings instead of creating one using the Driver
------------------------------------------------------------------------------------------
Key: TEIID-429
URL: https://jira.jboss.org/jira/browse/TEIID-429
Project: Teiid
Issue Type: Task
Affects Versions: 6.x
Reporter: Ramesh Reddy
Assignee: Ramesh Reddy
Fix For: 6.0.0
Currently when we have separate configurations for XA sources and Non-XA sources, these should be combined into one definition, and by default we should make attempt use the data sources instead of Drivers. This will make it easy on the user in specifying the properties rather than coming up with unique URL for the data source.
This will add
DatabaseName
ServerName
Port
properties in addition to already provided,
User
Password
URL -> expert=true
properties. The URL property will be set to "expert", so that if one needs to use the Driver, you can still use it. In addition this needs to provide support to add additional properties that may be needed by the specific data source. For this add
OptionalProperties
This should be supplied in the format [name=value;name=value] and runtime engines should support these to add these properties as DataSource bean properties.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 6 months
[JBoss JIRA] Created: (TEIID-881) SOAP Connector should expose property to control HTTP Header Transfer-Encoding: chunked
by Larry O'Leary (JIRA)
SOAP Connector should expose property to control HTTP Header Transfer-Encoding: chunked
---------------------------------------------------------------------------------------
Key: TEIID-881
URL: https://jira.jboss.org/jira/browse/TEIID-881
Project: Teiid
Issue Type: Feature Request
Components: XML Connector
Affects Versions: 6.2.0, 6.1.0, 6.0.0
Reporter: Larry O'Leary
Assignee: Steven Hawkins
A user has reported that results from a SOAP service using the SOAP-Relational connector are sometimes invalid. This is due to the results from an earlier invocation being returned. After further investigation this turned out to be a bug with the web server that was hosting the web service and its inability to properly handle chunked requests.
By default, Axis 1.3/2 (not sure what we are using lately) uses chunked Transfer-Encoding. By disabling chunked transfer encoding it allows the faulty web server to properly serve the request and return the expected results.
Ideally, chunked requests should be used as per the default Axis configuration but we should expose a means of overriding this behaviour in the event a user runs across a buggy web server.
For example, in SOAPExecutor chunked requests can be enabled/disabled via a setting in the Call properties.
Boolean isChunked = ((HTTPConnectorState) this.getState()).isHttpHeaderTransferEncodingChunked();
if (isChunked != null) {
Hashtable httpProps = (Hashtable) call.getProperty(HTTPConstants.REQUEST_HEADERS);
if (httpProps == null) {
httpProps = new Hashtable();
}
httpProps.put(HTTPConstants.HEADER_TRANSFER_ENCODING_CHUNKED, isChunked);
call.setProperty(HTTPConstants.REQUEST_HEADERS, httpProps);
}
Please note, this code was written against Axis 1.3 which is used in XML-Relational SOAP Connector for MMx 5.5.3.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 6 months