Giter VIP home page Giter VIP logo

service-api's Introduction

ReportPortal. Main API Module

Docker Pulls License stackoverflow FOSSA Status

Build Code Coverage Maven Central Total alerts

Copyright Notice

Licensed under the Apache 2.0 license (see the LICENSE file).

service-api's People

Contributors

anton-akinin avatar apiankouski avatar artsiomyeliseyenka avatar avarabyeu avatar bam6ycha avatar chingiskhan-epam avatar dshybeka avatar dzmitryhumianiuk avatar dzmitrykavalets avatar friendkapuzio avatar fullp avatar grabsefx avatar hardnorth avatar hlebkanonik avatar ihar-kahadouski avatar ivan-sukhomlyn avatar ivankustau avatar knodwell avatar miracle8484 avatar pbortnik avatar raikbitters avatar rkukharenka avatar scorpibear avatar talisman1234 avatar tkachoff avatar yana95 avatar yaroshalchenko avatar yauhenitsesliuk avatar yhalchenko-incomm avatar yumfriez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

service-api's Issues

Clean job filters projects incorrectly

Since we have a big amount of projects in RP in database are stored more than 100 project ids. Project that we need to clean up has id 117.
Used a debug logger mode to get more details and cleaning wasn't even started for project with id = 117.
It seems like query that collects projects for cleaning doesn't work properly.

Here is the part of log we expected to see but we didn't:
INFO 6 --- [gs-job-thread-1] c.epam.ta.reportportal.job.CleanLogsJob : Cleaning outdated logs for project 117 has been finished. Total logs removed: {some amount}

Please see the log attached.
rp_api_debug.zip

service api without rabbitmq

I understand we user rabbitmq for the purpose of analysis. Please correct me if my understanding is wrong.

We intend to use rp for aggregation of the test execution to start with with manual tagging of the issues.

is there a config that we could use disable any need for analyzer and deploy without rabbitmq.

Cannot 'activate' a new created user through exposed API

We are trying to use exposed API in order to perform some actions in our reportportal instance.

We are trying to create a new user and then use this new user in order to perform other actions (like creating widjets, dashboards, etc.).

STEPS:

  1. We Create a new user via {url}/api/v1/user.
  2. Then we Create UI_token {url}/uat/sso/oauth/token. We take the access_token in order to use it for the Get API token call.
  3. We are trying to get the api token through {url}/uat/sso/me/apitoken.

The problem is that we take error:
Code 404 - Not Found
Body:
{ "errorCode": 4046, "message": "User 'test' not found."}

As far as we can see, the calls are correct, but it seems that a step is required between steps 2 and 3.
To be more precise, if after step-2 we login manually to reportportal, then the step-3 will pass.
So, it seems that user is created but not "activated"...

Using reportportal UI
As we can see in the UI, the first time we login we can see 2 different apitoken calls. The first one fails with 404, and the second one passes. This is visible in "Network" tab but also in the errors in the "Console", as it is illustrated bellow:

login-manually-1

login-manually-2

ReportPortal version:

docker-images-versions

Incorrect time order in nested steps

зображення
Refresh Member Profile step have first step in 11:48:28, last step in 11:48:28 too, but Refresh blue circle was showed log that relocating after Refresh Member Profile step have 11:48:27 time.

The API service (v 5.3.1) doesn't start on kubernetes (1.13)

Hi guys,
It used to work for me in 5.2.0 but not any more. It seems like all the other services are fine, but not this one.
I'll provide some logs below. Can you help me figure out what's wrong? Thanks!

2020-09-16 21:10:41.418  INFO 8 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8585 (http)
2020-09-16 21:10:41.431  INFO 8 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-09-16 21:10:41.431  INFO 8 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.31]
2020-09-16 21:10:41.619  INFO 8 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-09-16 21:10:41.619  INFO 8 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 10912 ms
2020-09-16 21:10:42.943  INFO 8 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2020-09-16 21:10:43.346  INFO 8 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.4.12.Final
2020-09-16 21:10:43.848  INFO 8 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2020-09-16 21:10:45.323  INFO 8 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: com.epam.ta.reportportal.commons.JsonbAwarePostgresDialect
2020-09-16 21:10:49.144  INFO 8 --- [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-09-16 21:10:49.156  INFO 8 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2020-09-16 21:10:49.442  INFO 8 --- [           main] org.quartz.impl.StdSchedulerFactory      : Using default implementation for ThreadExecutor
2020-09-16 21:10:49.513  INFO 8 --- [           main] org.quartz.core.SchedulerSignalerImpl    : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2020-09-16 21:10:49.514  INFO 8 --- [           main] org.quartz.core.QuartzScheduler          : Quartz Scheduler v.2.3.2 created.
2020-09-16 21:10:49.523  INFO 8 --- [           main] o.s.s.quartz.LocalDataSourceJobStore     : Using db table-based data access locking (synchronization).
2020-09-16 21:10:49.525  INFO 8 --- [           main] o.s.s.quartz.LocalDataSourceJobStore     : JobStoreCMT initialized.
2020-09-16 21:10:49.526  INFO 8 --- [           main] org.quartz.core.QuartzScheduler          : Scheduler meta-data: Quartz Scheduler (v2.3.2) 'reportportal' with instanceId 'api:2f1c5075555e6d516ef7c037cc8e8702'
  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
  NOT STARTED.
  Currently in standby mode.
  Number of jobs executed: 0
  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads.
  Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is clustered.

2020-09-16 21:10:49.526  INFO 8 --- [           main] org.quartz.impl.StdSchedulerFactory      : Quartz scheduler 'reportportal' initialized from an externally provided properties instance.
2020-09-16 21:10:49.526  INFO 8 --- [           main] org.quartz.impl.StdSchedulerFactory      : Quartz scheduler version: 2.3.2
2020-09-16 21:10:49.526  INFO 8 --- [           main] org.quartz.core.QuartzScheduler          : JobFactory set to: com.epam.ta.reportportal.core.configs.SchedulerConfiguration$2@1eb7ec59
2020-09-16 21:10:54.205  INFO 8 --- [           main] org.pf4j.DefaultPluginStatusProvider     : Enabled plugins: []
2020-09-16 21:10:54.205  INFO 8 --- [           main] org.pf4j.DefaultPluginStatusProvider     : Disabled plugins: []
2020-09-16 21:10:54.208  INFO 8 --- [           main] org.pf4j.DefaultPluginManager            : PF4J version 2.4.0 in 'deployment' mode
2020-09-16 21:10:55.219  INFO 8 --- [           main] org.pf4j.AbstractPluginManager           : Plugin '[email protected]' resolved
2020-09-16 21:10:55.219  INFO 8 --- [           main] org.pf4j.AbstractPluginManager           : Start plugin '[email protected]'
2020-09-16 21:10:56.209  INFO 8 --- [           main] c.e.t.r.plugin.Pf4jPluginManager         : Plugin - 'jira' initialized.
2020-09-16 21:10:58.607  INFO 8 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'demoDataTaskExecutor'
2020-09-16 21:10:58.816  WARN 8 --- [           main] o.s.s.o.p.t.s.JwtAccessTokenConverter    : Unable to create an RSA verifier from verifierKey (ignoreable if using MAC)
2020-09-16 21:10:59.122  INFO 8 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'patternAnalysisTaskExecutor'
2020-09-16 21:10:59.725  INFO 8 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'emailExecutorService'
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by net.sf.jasperreports.engine.util.ClassUtils (jar:file:/service-api-5.3.1-exec.jar!/BOOT-INF/lib/jasperreports-6.12.2.jar!/) to constructor com.sun.org.apache.xerces.internal.util.XMLGrammarPoolImpl()
WARNING: Please consider reporting this to the maintainers of net.sf.jasperreports.engine.util.ClassUtils
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2020-09-16 21:11:02.232  WARN 8 --- [           main] n.s.j.engine.xml.JRTextFieldFactory      : The 'isStretchWithOverflow' attribute is deprecated. Use the 'textAdjust' attribute instead.
2020-09-16 21:11:02.729  INFO 8 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'saveLogsTaskExecutor'
2020-09-16 21:11:03.536  INFO 8 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'healthCheckTableExecutor'
2020-09-16 21:11:03.743  INFO 8 --- [           main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService 'taskScheduler'
2020-09-16 21:11:03.930  INFO 8 --- [           main] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: eght-1350020501-568568543-rabbitmq-ha:5672
2020-09-16 21:11:04.050  INFO 8 --- [           main] o.s.a.r.c.CachingConnectionFactory       : Created new connection: connectionFactory#334ebcaa:0/SimpleConnection@4e09c3b0 [delegate=amqp://[email protected]:5672/, localPort= 37530]
2020-09-16 21:11:04.408  INFO 8 --- [           main] o.s.amqp.rabbit.core.RabbitAdmin         : Auto-declaring a non-durable or auto-delete Exchange (broadcast.events) durable:false, auto-delete:false. It will be deleted by the broker if it shuts down, and can be redeclared by closing and reopening the connection.
2020-09-16 21:11:04.408  INFO 8 --- [           main] o.s.amqp.rabbit.core.RabbitAdmin         : Auto-declaring a non-durable, auto-delete, or exclusive Queue (broadcast.events._hJf49NETiepE4YR8Cq7EQ) durable:false, auto-delete:true, exclusive:true. It will be redeclared if the broker stops and is restarted while the connection factory is alive, but all messages will be lost.
2020-09-16 21:11:04.519  INFO 8 --- [           main] c.e.t.r.c.c.r.ReportingConfiguration     : Consumer is created, current consumers count is 1
2020-09-16 21:11:04.520  INFO 8 --- [           main] c.e.t.r.c.c.r.ReportingConfiguration     : Consumer is created, current consumers count is 2
2020-09-16 21:11:04.520  INFO 8 --- [           main] c.e.t.r.c.c.r.ReportingConfiguration     : Consumer is created, current consumers count is 3
2020-09-16 21:11:04.520  INFO 8 --- [           main] c.e.t.r.c.c.r.ReportingConfiguration     : Consumer is created, current consumers count is 4
2020-09-16 21:11:04.520  INFO 8 --- [           main] c.e.t.r.c.c.r.ReportingConfiguration     : Consumer is created, current consumers count is 5
2020-09-16 21:11:04.520  INFO 8 --- [           main] c.e.t.r.c.c.r.ReportingConfiguration     : Consumer is created, current consumers count is 6
2020-09-16 21:11:04.520  INFO 8 --- [           main] c.e.t.r.c.c.r.ReportingConfiguration     : Consumer is created, current consumers count is 7
2020-09-16 21:11:04.520  INFO 8 --- [           main] c.e.t.r.c.c.r.ReportingConfiguration     : Consumer is created, current consumers count is 8
2020-09-16 21:11:04.520  INFO 8 --- [           main] c.e.t.r.c.c.r.ReportingConfiguration     : Consumer is created, current consumers count is 9
2020-09-16 21:11:04.520  INFO 8 --- [           main] c.e.t.r.c.c.r.ReportingConfiguration     : Consumer is created, current consumers count is 10
2020-09-16 21:11:05.538  WARN 8 --- [           main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2020-09-16 21:11:06.011  INFO 8 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 4 endpoint(s) beneath base path ''
2020-09-16 21:11:06.231  INFO 8 --- [           main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v1/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
2020-09-16 21:11:06.321  INFO 8 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'autoAnalyzeTaskExecutor'
2020-09-16 21:11:06.738  WARN 8 --- [ ConnectionPool] okhttp3.OkHttpClient                     : A connection to http://eght-1350020501-568568543-minio:9000/ was leaked. Did you forget to close a response body? To see where this was allocated, set the OkHttpClient logger level to FINE: Logger.getLogger(OkHttpClient.class.getName()).setLevel(Level.FINE);
2020-09-16 21:11:08.214  INFO 8 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@54ad9ff9, org.springframework.security.web.context.SecurityContextPersistenceFilter@70d4c4ff, org.springframework.security.web.header.HeaderWriterFilter@362ad436, org.springframework.security.web.authentication.logout.LogoutFilter@37c1e2a4, org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter@319c77de, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1bf8ea44, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@5ab45d66, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@3b6b9981, org.springframework.security.web.session.SessionManagementFilter@4f03729f, org.springframework.security.web.access.ExceptionTranslationFilter@1dade178, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@1f315f3d]
2020-09-16 21:11:08.603  INFO 8 --- [           main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
2020-09-16 21:11:08.608  INFO 8 --- [           main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
2020-09-16 21:11:08.724  INFO 8 --- [           main] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
2020-09-16 21:11:09.420  INFO 8 --- [           main] org.jooq.Constants                       : 
                                      
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@  @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@        @@@@@@@@@@
@@@@@@@@@@@@@@@@  @@  @@    @@@@@@@@@@
@@@@@@@@@@  @@@@  @@  @@    @@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@    @@  @@  @@@@  @@@@@@@@@@
@@@@@@@@@@    @@  @@  @@@@  @@@@@@@@@@
@@@@@@@@@@        @@  @  @  @@@@@@@@@@
@@@@@@@@@@        @@        @@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@  @@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  Thank you for using jOOQ 3.12.4
                                      
2020-09-16 21:11:09.603  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getActivitiesUsingGET_1
2020-09-16 21:11:09.639  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAllowableIssueTypesUsingGET_1
2020-09-16 21:11:09.715  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getSetOfIntegrationSystemFieldsUsingGET_1
2020-09-16 21:11:09.943  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getGlobalIntegrationsUsingGET_1
2020-09-16 21:11:10.008  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getProjectIntegrationsUsingGET_1
2020-09-16 21:11:10.011  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: testIntegrationConnectionUsingGET_1
2020-09-16 21:11:10.207  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: finishLaunchUsingPUT_1
2020-09-16 21:11:10.306  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: mergeLaunchesUsingPOST_1
2020-09-16 21:11:10.307  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: startLaunchUsingPOST_1
2020-09-16 21:11:10.323  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: createLogUsingPOST_1
2020-09-16 21:11:10.325  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: createLogUsingPOST_2
2020-09-16 21:11:10.327  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: createLogUsingPOST_3
2020-09-16 21:11:10.436  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteProjectUsingDELETE_1
2020-09-16 21:11:10.533  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getProjectUsersUsingGET_1
2020-09-16 21:11:10.710  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: bulkUpdateUsingPUT_1
2020-09-16 21:11:10.717  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: finishTestItemUsingPUT_1
2020-09-16 21:11:10.719  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAttributeKeysUsingGET_1
2020-09-16 21:11:10.722  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAttributeValuesUsingGET_1
2020-09-16 21:11:10.742  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getTestItemsUsingGET_1
2020-09-16 21:11:10.806  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getTestItemsUsingGET_2
2020-09-16 21:11:10.812  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: startChildItemUsingPOST_1
2020-09-16 21:11:10.813  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: startRootItemUsingPOST_1
2020-09-16 21:11:10.837  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getMyselfUsingGET_1
2020-09-16 21:11:10.936  INFO 8 --- [           main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getWidgetUsingGET_1
2020-09-16 21:11:11.018  INFO 8 --- [           main] c.e.t.r.c.c.SchedulerConfiguration$1     : Starting Quartz Scheduler now
2020-09-16 21:11:11.029  INFO 8 --- [           main] o.s.s.quartz.LocalDataSourceJobStore     : ClusterManager: detected 1 failed or restarted instances.
2020-09-16 21:11:11.029  INFO 8 --- [           main] o.s.s.quartz.LocalDataSourceJobStore     : ClusterManager: Scanning for instance "api:2403436c68b4100c6c3bfb41d90c44b1"'s failed in-progress jobs.
2020-09-16 21:11:11.034  INFO 8 --- [           main] org.quartz.core.QuartzScheduler          : Scheduler reportportal_$_api:2f1c5075555e6d516ef7c037cc8e8702 started.
2020-09-16 21:11:11.423  INFO 8 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8585 (http) with context path ''
2020-09-16 21:11:11.426  INFO 8 --- [           main] c.e.t.r.core.configs.ReportPortalApp     : Started ReportPortalApp in 42.679 seconds (JVM running for 43.916)
2020-09-16 21:11:11.918 ERROR 8 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.jasypt.exceptions.EncryptionOperationNotPossibleException: null
 at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.decrypt(StandardPBEByteEncryptor.java:1169)
 at org.jasypt.encryption.pbe.StandardPBEStringEncryptor.decrypt(StandardPBEStringEncryptor.java:738)
 at org.jasypt.util.text.BasicTextEncryptor.decrypt(BasicTextEncryptor.java:112)
 at com.epam.ta.reportportal.core.integration.migration.JiraEmailSecretMigrationService.lambda$migrate$1(JiraEmailSecretMigrationService.java:55)
 at java.base/java.util.Optional.ifPresent(Unknown Source)
 at com.epam.ta.reportportal.core.integration.migration.JiraEmailSecretMigrationService.lambda$migrate$2(JiraEmailSecretMigrationService.java:54)
 at java.base/java.util.ArrayList.forEach(Unknown Source)
 at com.epam.ta.reportportal.core.integration.migration.JiraEmailSecretMigrationService.migrate(JiraEmailSecretMigrationService.java:52)
 at com.epam.ta.reportportal.core.integration.migration.JiraEmailSecretMigrationService$$FastClassBySpringCGLIB$$4bc27873.invoke(<generated>)
 at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
 at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
 at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
 at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:366)
 at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
 at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
 at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
 at com.epam.ta.reportportal.core.integration.migration.JiraEmailSecretMigrationService$$EnhancerBySpringCGLIB$$2fcce4ad.migrate(<generated>)
 at com.epam.ta.reportportal.core.events.handler.IntegrationSecretsMigrationHandler.migrate(IntegrationSecretsMigrationHandler.java:78)
 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.base/java.lang.reflect.Method.invoke(Unknown Source)
 at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:305)
 at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:190)
 at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:153)
 at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
 at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
 at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
 at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:403)
 at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:360)
 at org.springframework.boot.context.event.EventPublishingRunListener.running(EventPublishingRunListener.java:103)
 at org.springframework.boot.SpringApplicationRunListeners.running(SpringApplicationRunListeners.java:77)
 at org.springframework.boot.SpringApplication.run(SpringApplication.java:330)
 at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
 at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
 at com.epam.ta.reportportal.core.configs.ReportPortalApp.main(ReportPortalApp.java:37)
 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.base/java.lang.reflect.Method.invoke(Unknown Source)
 at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
 at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
 at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
 at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)

2020-09-16 21:11:11.921  INFO 8 --- [           main] org.quartz.core.QuartzScheduler          : Scheduler reportportal_$_api:2f1c5075555e6d516ef7c037cc8e8702 paused.
2020-09-16 21:11:11.925  INFO 8 --- [           main] o.s.a.r.l.SimpleMessageListenerContainer : Waiting for workers to finish.
2020-09-16 21:11:12.111  INFO 8 --- [           main] o.s.a.r.l.SimpleMessageListenerContainer : Successfully waited for workers to finish.
2020-09-16 21:11:12.113  INFO 8 --- [           main] o.s.a.r.l.SimpleMessageListenerContainer : Waiting for workers to finish.
2020-09-16 21:11:12.115  INFO 8 --- [           main] o.s.a.r.l.SimpleMessageListenerContainer : Successfully waited for workers to finish.
2020-09-16 21:11:12.117  INFO 8 --- [           main] o.s.a.r.l.SimpleMessageListenerContainer : Waiting for workers to finish.
2020-09-16 21:11:12.122  INFO 8 --- [           main] o.s.a.r.l.SimpleMessageListenerContainer : Successfully waited for workers to finish.
2020-09-16 21:11:12.124  INFO 8 --- [           main] o.s.a.r.l.SimpleMessageListenerContainer : Shutdown ignored - container is not active already
2020-09-16 21:11:12.125  INFO 8 --- [           main] o.s.a.r.l.SimpleMessageListenerContainer : Shutdown ignored - container is not active already
2020-09-16 21:11:12.125  INFO 8 --- [           main] o.s.a.r.l.SimpleMessageListenerContainer : Shutdown ignored - container is not active already
2020-09-16 21:11:12.125  INFO 8 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'autoAnalyzeTaskExecutor'
2020-09-16 21:11:12.131  INFO 8 --- [           main] o.s.s.c.ThreadPoolTaskScheduler          : Shutting down ExecutorService 'taskScheduler'
2020-09-16 21:11:12.132  INFO 8 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'healthCheckTableExecutor'
2020-09-16 21:11:12.133  INFO 8 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'saveLogsTaskExecutor'
2020-09-16 21:11:12.133  INFO 8 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'emailExecutorService'
2020-09-16 21:11:12.134  INFO 8 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'patternAnalysisTaskExecutor'
2020-09-16 21:11:12.134  INFO 8 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'demoDataTaskExecutor'
2020-09-16 21:11:12.204  INFO 8 --- [           main] c.e.t.r.c.c.SchedulerConfiguration$1     : Shutting down Quartz Scheduler
2020-09-16 21:11:12.204  INFO 8 --- [           main] org.quartz.core.QuartzScheduler          : Scheduler reportportal_$_api:2f1c5075555e6d516ef7c037cc8e8702 shutting down.
2020-09-16 21:11:12.204  INFO 8 --- [           main] org.quartz.core.QuartzScheduler          : Scheduler reportportal_$_api:2f1c5075555e6d516ef7c037cc8e8702 paused.
2020-09-16 21:11:12.241  INFO 8 --- [           main] org.quartz.core.QuartzScheduler          : Scheduler reportportal_$_api:2f1c5075555e6d516ef7c037cc8e8702 shutdown complete.
2020-09-16 21:11:12.265  INFO 8 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2020-09-16 21:11:12.508  INFO 8 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
2020-09-16 21:11:12.541  INFO 8 --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@aec9672: tags=[[amq.ctag-JAfcICjGW_cqco-g327jBA]], channel=Cached Rabbit Channel: AMQChannel(amqp://[email protected]:5672/,1), conn: Proxy@7a174e4b Shared Rabbit Connection: null, acknowledgeMode=AUTO local queue size=0
2020-09-16 21:11:12.547  INFO 8 --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@a824f87: tags=[[amq.ctag-D4W4Q3O6mmxRGceixB_IzQ]], channel=Cached Rabbit Channel: AMQChannel(amqp://[email protected]:5672/,2), conn: Proxy@7a174e4b Shared Rabbit Connection: null, acknowledgeMode=AUTO local queue size=0
2020-09-16 21:11:12.559  INFO 8 --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@1b6982e4: tags=[[amq.ctag-EI40tq5Np2Gsz5M4ddcs7g]], channel=Cached Rabbit Channel: AMQChannel(amqp://[email protected]:5672/,4), conn: Proxy@7a174e4b Shared Rabbit Connection: null, acknowledgeMode=AUTO local queue size=0
2020-09-16 21:11:12.603  INFO 8 --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@32eca9f4: tags=[[amq.ctag-k5DdnN6_GQDN4sPaFEkL0A]], channel=Cached Rabbit Channel: AMQChannel(amqp://[email protected]:5672/,5), conn: Proxy@7a174e4b Shared Rabbit Connection: null, acknowledgeMode=AUTO local queue size=0
2020-09-16 21:11:12.603  INFO 8 --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@1e6a8d01: tags=[[amq.ctag-_k1NGXGe5ngHUHS-1ntSmw]], channel=Cached Rabbit Channel: AMQChannel(amqp://[email protected]:5672/,6), conn: Proxy@7a174e4b Shared Rabbit Connection: null, acknowledgeMode=AUTO local queue size=0
2020-09-16 21:11:12.603  INFO 8 --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@1eb3a6a3: tags=[[amq.ctag-ztKdtNnoDyP_DhoRRCDJXw]], channel=Cached Rabbit Channel: AMQChannel(amqp://[email protected]:5672/,3), conn: Proxy@7a174e4b Shared Rabbit Connection: null, acknowledgeMode=AUTO local queue size=0
2020-09-16 21:11:12.607  INFO 8 --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@34b4c82a: tags=[[amq.ctag-Zy0TnkqxNEhtc8J5-VUogg]], channel=Cached Rabbit Channel: AMQChannel(amqp://[email protected]:5672/,7), conn: Proxy@7a174e4b Shared Rabbit Connection: null, acknowledgeMode=AUTO local queue size=0
2020-09-16 21:11:12.612  INFO 8 --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@2daf650b: tags=[[amq.ctag-J4kCX8OcAvdHAEBT3LPRRQ]], channel=Cached Rabbit Channel: AMQChannel(amqp://[email protected]:5672/,8), conn: Proxy@7a174e4b Shared Rabbit Connection: null, acknowledgeMode=AUTO local queue size=0
2020-09-16 21:11:12.618  INFO 8 --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@5f1d270a: tags=[[amq.ctag-a1hHkXM7NLqb8-6RAwLjUA]], channel=Cached Rabbit Channel: AMQChannel(amqp://[email protected]:5672/,9), conn: Proxy@7a174e4b Shared Rabbit Connection: null, acknowledgeMode=AUTO local queue size=0
2020-09-16 21:11:12.638  INFO 8 --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@5180f430: tags=[[amq.ctag-iB6Ut0M1aMXP23FyqPvbYA]], channel=Cached Rabbit Channel: AMQChannel(amqp://[email protected]:5672/,10), conn: Proxy@7a174e4b Shared Rabbit Connection: null, acknowledgeMode=AUTO local queue size=0
2020-09-16 21:11:17.545  INFO 8 --- [cTaskExecutor-2] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@185eef05: tags=[[]], channel=null, acknowledgeMode=AUTO local queue size=0
2020-09-16 21:11:17.549  INFO 8 --- [cTaskExecutor-2] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@22006ffb: tags=[[]], channel=null, acknowledgeMode=AUTO local queue size=0
2020-09-16 21:11:17.562  INFO 8 --- [cTaskExecutor-2] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@3b803fd4: tags=[[]], channel=null, acknowledgeMode=AUTO local queue size=0
2020-09-16 21:11:17.606  INFO 8 --- [cTaskExecutor-2] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@3e38f38: tags=[[]], channel=null, acknowledgeMode=AUTO local queue size=0

Get list of all projects

Hi,

is it possible to get list of all projects through rest API (and also .NET client)?

I cannot see it. I want to gather all launches from all projects to create some overall statistics in my application. Currently I need to hardcode project names in my code.

I would be nice to get all projects through rest for specified user.

what should password set to rpuser for database authentication from service-api.jar

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'metaDataSourceAdvisor': Cannot resolve reference to bean 'methodSecurityMetadataSource' while setting constructor argument; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityConfiguration.MethodSecurityConfig': Unsatisfied dependency expressed through field 'permissionEvaluator'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'permissionEvaluator': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'aclFullPermission': Unsatisfied dependency expressed through field 'aclPermissionEvaluator'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'ACLContext': Unsatisfied dependency expressed through field 'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [com/epam/ta/reportportal/config/DataSourceConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'dataSource' threw exception; nested exception is com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: FATAL: password authentication failed for user "rpuser"

com.epam.ta.reportportal.exception.ReportPortalException: You do not have enough permissions

Hi,

We are observing a lot of "com.epam.ta.reportportal.exception.ReportPortalException: You do not have enough permissions." messages in service-api log. On web side it looks like everything works file, reports are published, users see what they need, no obvious errors, so it is completely unclear where these messages are coming from. I think it would be helpful to include object names in these messages, to see who is trying access what.
Any ideas how we can find that with current Report Portal version (5.3.3) please?
Full exception message example:

2020-12-18 11:40:28.082 ERROR 6 --- [o-8585-exec-998] c.e.t.r.c.e.rest.RestExceptionHandler    : Handled error:
com.epam.ta.reportportal.exception.ReportPortalException: You do not have enough permissions. Please check the list of your available projects.
        at com.epam.ta.reportportal.util.ProjectExtractor.lambda$extractProjectDetails$0(ProjectExtractor.java:51)
        at java.base/java.util.Optional.orElseThrow(Unknown Source)
        at com.epam.ta.reportportal.util.ProjectExtractor.extractProjectDetails(ProjectExtractor.java:51)
        at com.epam.ta.reportportal.ws.controller.LaunchAsyncController.startLaunch(LaunchAsyncController.java:75)
        at com.epam.ta.reportportal.ws.controller.LaunchAsyncController$$FastClassBySpringCGLIB$$89c2d16e.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
        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.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
        at com.epam.ta.reportportal.ws.controller.LaunchAsyncController$$EnhancerBySpringCGLIB$$c47a2f15.startLaunch(<generated>)
        at jdk.internal.reflect.GeneratedMethodAccessor732.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:125)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:118)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:158)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:180)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:92)
        at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:77)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:109)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
        at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Unknown Source)

Expose test specific data

I was surprised I was unable to find anything in the APIs via Swagger that exposes the status of a test. I ran into ReportPortal looking for a way to determine the stability of a test so I could query from my test framework to skip/ignore failures based on the decisions made in ReportPortal.

Am I missing something?

Github is set to display develop as primary branch

This Github repository is set to display develop as primary branch when it was last updated 5 months ago. while master was updated a week ago. This may lead some people to think that the project is abandoned.

Is this setup correct?

Endpoint POST /api/v*/{project-name}/launch returns UUID instead of ID of the newly created launch

endpoint POST /api/v*/{project-name}/launch returns UUID instead of ID of the newly created launch.

This is observed in v5 service-api, for both v1 and v2 api endpoints, and with both sync and async invocations.

The root cause can be easily spotted in :

  1. https://github.com/reportportal/service-api/blob/develop/src/main/java/com/epam/ta/reportportal/core/launch/impl/StartLaunchHandlerImpl.java : line 85

  2. https://github.com/reportportal/service-api/blob/develop/src/main/java/com/epam/ta/reportportal/core/launch/impl/StartLaunchHandlerAsyncImpl.java : line 66

referring to develop and master branches, and to tag 5.3.0

The problem is that when the client wants to obtain a launch URL, it gets one that is not accepted by the client, because it ends with the uuid rather than the id of the new launch (in v4 this was the correct URL, but in v5 it seems like the correct URL should end with the launch ID, not UUID).

Or is the bug actually on the UI side ? come to think of it, it make more sense that the breaking change was in the UI end, exposing the launch via it's internal repository id rather than its UUID.

For example :

POST https://il-reportportal-lp1/api/v2/tzahia_personal/launch with body
{
"mode":0,
"name":"AI635x",
"startTime":1598363771611
}

returns a response as :
{
"id": "62e58332-a0c1-4497-b910-114a401d9f1d",
"number": null
}

creates a launch who's UI URL is something like :
https://il-reportportal-lp1/ui/#tzahia_personal/launches/all/**2289**

Where/how is RP_PROFILES used?

Hello,

To set the context, I want to refer first to this issue:

reportportal/service-authorization#31

I'm also in need of deploying to AWS and would favour ECS service discovery over an additional Consul container. In the configuration of the Additional Arguments, I read about the RP_PROFILES environment variable which needs to be set to docker. A search for RP_PROFILES in the Github reportportal organization does not render many hits. None of these hits is in the code. 😕

Given that only the value of docker is documented, and the Installation Documentation heavily points to the Docker Compose setup, I starting to think that this config setting matches to a config loader dedicated to the Docker Compose setup with all the assumptions of the Docker bridged network etc.

So if we want to support other deployment models, should other config loaders be implemented? If so, can someone from the ReportPortal shed light how the bootstrapping works?

Tnx.

Unable to start Embeded Tomacat

I am trying to install Report-Portal without Docker using url "https://github.com/reportportal/shell-installation" as reference.

From start_rp.sh file :
"RP_AMQP_HOST=localhost RP_AMQP_USER=$RP_RABBITMQ_USER RP_AMQP_PASS=$RP_RABBITMQ_PASSWORD RP_DB_USER=$RP_POSTGRES_USER RP_DB_PASS=$RP_POSTGRES_PASSWORD RP_DB_HOST=localhost java $SERVICE_API_JAVA_OPTS -jar service-api.jar"

When I tried to execute service-api.jar using above command getting tha following error as :

2020-10-04 21:41:51.229 ERROR 24811 --- [ main] o.s.b.web.embedded.tomcat.TomcatStarter : Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCreationException. Message: Error creating bean with name 'servletEndpointRegistrar' defined in class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: Factory method 'servletEndpointRegistrar' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'infoEndpoint' defined in class path resource [org/springframework/boot/actuate/autoconfigure/info/InfoEndpointAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.info.InfoEndpoint]: Factory method 'infoEndpoint' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'infoContributorComposite' defined in URL [jar:file:/home/yatendrak/report-portal/service-api.jar!/BOOT-INF/classes!/com/epam/ta/reportportal/info/InfoContributorComposite.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'analyzerInfoContributor' defined in URL [jar:file:/home/yatendrak/report-portal/service-api.jar!/BOOT-INF/classes!/com/epam/ta/reportportal/info/AnalyzerInfoContributor.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'managementTemplate' defined in class path resource [com/epam/ta/reportportal/core/configs/rabbit/AnalyzerRabbitMqConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.epam.ta.reportportal.core.analyzer.auto.client.RabbitMqManagementClient]: Factory method 'managementTemplate' threw exception; nested exception is org.springframework.web.client.HttpClientErrorException$Unauthorized: 401 Unauthorized: [no body]
2020-10-04 21:41:51.355 INFO 24811 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2020-10-04 21:41:51.368 WARN 24811 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
2020-10-04 21:41:51.384 INFO 24811 --- [ main] c.e.t.r.c.c.SchedulerConfiguration$1 : Shutting down Quartz Scheduler
2020-10-04 21:41:51.386 INFO 24811 --- [ main] org.quartz.core.QuartzScheduler : Scheduler reportportal_$api:c9aa072669d3b8b368b8e5744716e0ac shutting down.
2020-10-04 21:41:51.386 INFO 24811 --- [ main] org.quartz.core.QuartzScheduler : Scheduler reportportal
$api:c9aa072669d3b8b368b8e5744716e0ac paused.
2020-10-04 21:41:51.827 INFO 24811 --- [ main] org.quartz.core.QuartzScheduler : Scheduler reportportal
$_api:c9aa072669d3b8b368b8e5744716e0ac shutdown complete.
2020-10-04 21:41:51.854 INFO 24811 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2020-10-04 21:41:52.003 INFO 24811 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
2020-10-04 21:41:52.126 INFO 24811 --- [ main] ConditionEvaluationReportLoggingListener :

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-10-04 21:41:52.158 ERROR 24811 --- [ main] o.s.boot.SpringApplication : Application run failed

org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:156)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
at com.epam.ta.reportportal.core.configs.ReportPortalApp.main(ReportPortalApp.java:37)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:107)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:126)
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.(TomcatWebServer.java:88)
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:438)
at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:191)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:180)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:153)
... 16 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletEndpointRegistrar' defined in class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: Factory method 'servletEndpointRegistrar' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'infoEndpoint' defined in class path resource [org/springframework/boot/actuate/autoconfigure/info/InfoEndpointAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.info.InfoEndpoint]: Factory method 'infoEndpoint' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'infoContributorComposite' defined in URL [jar:file:/home/yatendrak/report-portal/service-api.jar!/BOOT-INF/classes!/com/epam/ta/reportportal/info/InfoContributorComposite.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'analyzerInfoContributor' defined in URL [jar:file:/home/yatendrak/report-portal/service-api.jar!/BOOT-INF/classes!/com/epam/ta/reportportal/info/AnalyzerInfoContributor.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'managementTemplate' defined in class path resource [com/epam/ta/reportportal/core/configs/rabbit/AnalyzerRabbitMqConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.epam.ta.reportportal.core.analyzer.auto.client.RabbitMqManagementClient]: Factory method 'managementTemplate' threw exception; nested exception is org.springframework.web.client.HttpClientErrorException$Unauthorized: 401 Unauthorized: [no body]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:656)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207)
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:211)
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:202)
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans(ServletContextInitializerBeans.java:96)
at org.springframework.boot.web.servlet.ServletContextInitializerBeans.(ServletContextInitializerBeans.java:85)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:253)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:227)
at org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:53)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5128)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:843)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Tomcat.start(Tomcat.java:486)
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:107)
... 21 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: Factory method 'servletEndpointRegistrar' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'infoEndpoint' defined in class path resource [org/springframework/boot/actuate/autoconfigure/info/InfoEndpointAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.info.InfoEndpoint]: Factory method 'infoEndpoint' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'infoContributorComposite' defined in URL [jar:file:/home/yatendrak/report-portal/service-api.jar!/BOOT-INF/classes!/com/epam/ta/reportportal/info/InfoContributorComposite.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'analyzerInfoContributor' defined in URL [jar:file:/home/yatendrak/report-portal/service-api.jar!/BOOT-INF/classes!/com/epam/ta/reportportal/info/AnalyzerInfoContributor.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'managementTemplate' defined in class path resource [com/epam/ta/reportportal/core/configs/rabbit/AnalyzerRabbitMqConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.epam.ta.reportportal.core.analyzer.auto.client.RabbitMqManagementClient]: Factory method 'managementTemplate' threw exception; nested exception is org.springframework.web.client.HttpClientErrorException$Unauthorized: 401 Unauthorized: [no body]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651)
... 61 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'infoEndpoint' defined in class path resource [org/springframework/boot/actuate/autoconfigure/info/InfoEndpointAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.info.InfoEndpoint]: Factory method 'infoEndpoint' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'infoContributorComposite' defined in URL [jar:file:/home/yatendrak/report-portal/service-api.jar!/BOOT-INF/classes!/com/epam/ta/reportportal/info/InfoContributorComposite.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'analyzerInfoContributor' defined in URL [jar:file:/home/yatendrak/report-portal/service-api.jar!/BOOT-INF/classes!/com/epam/ta/reportportal/info/AnalyzerInfoContributor.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'managementTemplate' defined in class path resource [com/epam/ta/reportportal/core/configs/rabbit/AnalyzerRabbitMqConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.epam.ta.reportportal.core.analyzer.auto.client.RabbitMqManagementClient]: Factory method 'managementTemplate' threw exception; nested exception is org.springframework.web.client.HttpClientErrorException$Unauthorized: 401 Unauthorized: [no body]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:656)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1108)
at org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.createEndpointBean(EndpointDiscoverer.java:143)
at org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.createEndpointBeans(EndpointDiscoverer.java:133)
at org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.discoverEndpoints(EndpointDiscoverer.java:122)
at org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.getEndpoints(EndpointDiscoverer.java:116)
at org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration.servletEndpointRegistrar(ServletEndpointManagementContextConfiguration.java:65)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
... 62 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.info.InfoEndpoint]: Factory method 'infoEndpoint' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'infoContributorComposite' defined in URL [jar:file:/home/yatendrak/report-portal/service-api.jar!/BOOT-INF/classes!/com/epam/ta/reportportal/info/InfoContributorComposite.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'analyzerInfoContributor' defined in URL [jar:file:/home/yatendrak/report-portal/service-api.jar!/BOOT-INF/classes!/com/epam/ta/reportportal/info/AnalyzerInfoContributor.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'managementTemplate' defined in class path resource [com/epam/ta/reportportal/core/configs/rabbit/AnalyzerRabbitMqConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.epam.ta.reportportal.core.analyzer.auto.client.RabbitMqManagementClient]: Factory method 'managementTemplate' threw exception; nested exception is org.springframework.web.client.HttpClientErrorException$Unauthorized: 401 Unauthorized: [no body]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651)
... 82 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'infoContributorComposite' defined in URL [jar:file:/home/yatendrak/report-portal/service-api.jar!/BOOT-INF/classes!/com/epam/ta/reportportal/info/InfoContributorComposite.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'analyzerInfoContributor' defined in URL [jar:file:/home/yatendrak/report-portal/service-api.jar!/BOOT-INF/classes!/com/epam/ta/reportportal/info/AnalyzerInfoContributor.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'managementTemplate' defined in class path resource [com/epam/ta/reportportal/core/configs/rabbit/AnalyzerRabbitMqConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.epam.ta.reportportal.core.analyzer.auto.client.RabbitMqManagementClient]: Factory method 'managementTemplate' threw exception; nested exception is org.springframework.web.client.HttpClientErrorException$Unauthorized: 401 Unauthorized: [no body]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:228)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1358)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1204)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1510)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1467)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1313)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1245)
at org.springframework.beans.factory.support.DefaultListableBeanFactory$DependencyObjectProvider.resolveStream(DefaultListableBeanFactory.java:1969)
at org.springframework.beans.factory.support.DefaultListableBeanFactory$DependencyObjectProvider.orderedStream(DefaultListableBeanFactory.java:1963)
at org.springframework.boot.actuate.autoconfigure.info.InfoEndpointAutoConfiguration.infoEndpoint(InfoEndpointAutoConfiguration.java:45)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
... 83 common frames omitted

CORS does not seem to be working

I can use Allow CORS: Access-Control-Allow-Origin extension however, this is not ideal long term. It appears this is happening only when accessing via JavaScript or other HTTP clients I am seeing it working in Postman but not axios.

I have found a way to enable CORS globally and have it trigger based on ENV variables. I will make PR for both this and service-authorization.

how to merge repeated if exception test in reportportal

Hi,

We are using this annotation to repeat the test automatically if the test is failing

@ParameterizedRepeatedIfExceptionsTest
@RepeatedIfExceptionsTest

from this library
import io.github.artsok.ParameterizedRepeatedIfExceptionsTest;
import io.github.artsok.RepeatedIfExceptionsTest;

The challenge we faced , if ifs repeated because of failure , reportportal will create 2 test and report separate status for each of them
Is there anyway to merge this / treat it as 1 test ?

Remove /issue/link item status check

Сейчас ишью пожно прилинковать через апи "/issue/link" только если тест айтем нот пассед. Хотелось бы иметь возможность линковать ишью к любому тест айтему. Зачем?

Например есть логика: вешаем аннотацию @issue(1202) на метод, если статус ишью в JIRA "Redy to test", то тест перезапускаеться, и не важно, успешно он прошел или нет, хотелось бы репорте видеть, что аннотация стоит, и ишью приленкована. А если аннотацию убирать, то и линк исчезает.

/api/v1/widget/shared/search?term returns the first result which contains the term instead of matching it exactly

If we use the api /api/v1/widget/shared/search?term= to search for a widget with name "launch1 Launches Table"
it returns results which contain the word launch1 Launches Table instead of matching the exact string

This way if there is launch1 Launches Table and hello_launch1 Launches table, it returns the entry which was created first, so hello_lauch1 Launches Table is returned

e.g

url: https://<RP INSTANCE URL>/api/v1/<project_name>/widget/shared/search?term=launch1 Launches Table
 r.status_code: 200
 r.text: {"content":[{"description":"RP PreProc Auto widget","owner":"teflo_user","share":true,"id":360,"name":"teflo_launch1 Launches Table","widgetType":"launchesTable","contentParameters":{"contentFields":[],"itemsCount":10}}],"page":{"number":1,"size":20,"totalElements":1,"totalPages":1}}

Current version:API Service: 5.6.3
Authorization Service: 5.6.3
Service UI: 5.6.0

Could it be because it is looking for find any instead of exact string?

return Arrays.stream(DataProviderType.values()).filter(type -> type.getType().equalsIgnoreCase(name)).findAny();

Launch POST response is not sent if disk is full

When the disk is full but the service is responsive, service-api fails to process a launch POST request and send a response to the client application.

The function should timeout or fail and then send a response even if it cannot process the request so the client won't wait indefinitely. This mostly affects smaller-scale or development deployments without proper disk management.

Steps to reproduce:

  1. Start the service.
  2. Fill the disk to full.
  3. Send /api/v2/<project>/launch POST request.

Log:

2022-02-16 10:31:05.649 DEBUG 1 --- [io-8585-exec-84] c.e.t.r.w.c.LaunchAsyncController        : startLaunch (1046621) - Request
 POST /v2/<project>/launch
 host: -
 user-agent: python-requests/2.26.0

 -- Body --
 {"startTime":1645007465579,"name":"test","attributes":[{"key":"machine","value":"x86_64","system":true},{"key":"cpu","value":"i386","system":true},{"key":"agent","value":"pytest-reportportal-5.0.11","system":true},{"key":"os","value":"Darwin","system":true}],"mode":"DEFAULT","rerun":false}

how can i customize url in report portal link in the email

Hi,

I realized the link url sent in the report portal email ( if i enable email integration ) is taking from backend.api.servers.url ?
Is there anyway i can configure this ?

We use this to install the report portal
https://github.com/reportportal/shell-installation/blob/master/reportportal/download_services.sh

Versions of the services

API_VERSION="5.0.0"
UAT_VERSION="5.0.0"
ANALYZER_VERSION="5.0.0"
MIGRATIONS_VERSION="5.0.0"
UI_VERSION="5.0.0"
SERVICE_INDEX_VERSION="5.0.5"

Thanks

CORS seems to be unsupported

Cross origin requests fails when browser sends pre-flight OPTIONS request.

Pre-flight request:

OPTIONS
https://rp.epam.com/api/v1/viachaslau_balashevich_personal/launch/latest?page.page=1&page.size=50&page.sort=start_time%2CDESC

Pre-flight request headers:

Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Access-Control-Request-Headers: authorization
Access-Control-Request-Method: GET
Connection: keep-alive
Host: rp.epam.com
Origin: http://localhost:3000
Referer: http://localhost:3000/
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36

There is no Authorization header obviously - it's added to GET request, not to the pre-flight one.

Request which causes browser to fire pre-flight:

GET
https://rp.epam.com/api/v1/viachaslau_balashevich_personal/launch/latest?page.page=1&page.size=50&page.sort=start_time%2CDESC

with header:

Authorization': 'bearer there_is_some_valid_token'

Error:

Failed to load https://rp.epam.com/api/v1/viachaslau_balashevich_personal/launch/latest?page.page=1&page.size=50&page.sort=start_time%2CDESC: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 401. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

MinIO bucket name is hardcoded

If I understand correctly, MinIO bucket name configuration doesn’t support now based on the source code in the commons-dao repository.

https://github.com/reportportal/commons-dao/blob/cfb9cb11679de0923fc18e58eb3ad8e3f5095f01/src/main/java/com/epam/ta/reportportal/filesystem/distributed/minio/MinioDataStore.java#L44
https://github.com/reportportal/commons-dao/blob/22ce3438a10fff8fe691a44c0bf4d1c3bf464056/src/main/java/com/epam/ta/reportportal/config/DataStoreConfiguration.java#L56

So I think that it would be nice to have an opportunity to configure bucket name during starting of service-authorization and service-api with some property like datastore.minio.bucket and via environment variable like RP_BINARYSTORE_MINIO_BUCKET as other storage parameters.

It can be useful in case if you would like to configure MinIO S3 gateway and use Amazon S3 service with a single bucket instead of self-hosted MinIO storage.

How can I change the logging level of the reportportal/service-api ?

Hello,

I'm running a RepotPortal 5 self-hosted cluster, from a docker-compose file.

We configured the ReportPortal services to send their own logging messages to an ELK central logging service.

We have observed that ever since switching to ReportPortal 5's async reporting, outrELK ReportPortal log indices are flooded with hundreds of GB of log messages daily.

After some investigation, we identified that most of it is coming from DEBUG log messages of the API services, and more specifically from the **com.epam.ta.reportportal.ws package (LogAsyncController.createLog, TestItemAsyncController. finishTestItem, and AsyncReportingListener.onMessage (not exception logs)).

For every reporting API request/response, we get multiple DEBUG log messages from these classes.

I see here https://github.com/reportportal/service-api/blob/d16a30d3d4f6430c0fe45e3df2208dac7e21887e/src/main/resources/application.yaml that the default logging level for these packages is set to debug

We have tried to change the log level settings for this package, via our docker-compose.yml file. We tried with various methods shown below, but none of them changed the package's logging level - it keeps logging DEBUG messages.

api:
image: reportportal/service-api:5.3.5
...
environment:
- logging.level.root=info
- logging.level.com.epam.ta.reportportal.ws.controller=info
- logging.level.com.epam.ta.reportportal.ws.rabbit=info

also :
- LOGGING_LEVEL=info

and :
- SPRING_APPLICATION_JSON:
'{"logging.level.root": "INFO"}'

or :
- SPRING_APPLICATION_JSON:
- '{"logging.level.com.epam.ta.reportportal.ws.controller": "info", "logging.level.com.epam.ta.reportportal.ws.rabbit": "info"}'

plus :
- LOGGING_LEVEL_COM_EPAM=info

Please advise how this can be achieved.

Thanks.

Golang library

I don't use Report Portal at all but I want to integrate my application written on Go with Report Portal. Is there Go package for it or may be swagger doc?

FileUploadException: the request was rejected because no multipart boundary was found

Hi Team,

If i am trying to post log along with multiform attachment, I am getting following error. It is happening over code and postman as well.

{
"errorCode": 5000,
"message": "Unclassified error [Failed to parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadException: the request was rejected because no multipart boundary was found]"
}

Sample Java Code:

HttpPost` request = new HttpPost(url);
try (CloseableHttpClient client = HttpClients.createDefault()) {			
	request.addHeader("Authorization", getToken());
	request.addHeader("Content-Type", "multipart/form-data");

	MultipartEntityBuilder builder = MultipartEntityBuilder.create();
	builder.addBinaryBody("file", file, ContentType.DEFAULT_BINARY, file.getName())
			.addTextBody("json_request_part", mapper.writeValueAsString(obj),ContentType.DEFAULT_BINARY);
	request.setEntity(builder.build());

	return client.execute(request,
			httpResponse -> mapper.readValue(httpResponse.getEntity().getContent(), Map.class));
}

Add support for log handler to accept binary as part of the JSON post

currently if attaching images to the log multipart post is required which is not restful implementation.

maybe add support for the following format?

{
  "file": {
    "name": "string",
    "base64": "IH0KfSk7Cjwvc2NyaXB0PgoKCjwvYm9keT48L2h0bWw+\n"
  },
  "item_id": "string",
  "level": "error",
  "message": "string",
  "time": "2019-07-05T19:16:11.469Z"
} 

Reportportal always keeps at least 1 open connection to Postgres datasource

When configuring the api (or UAT services), RP always keeps at least 1 connection to the database open.

RP_DATASOURCE_MAXIMUMPOOLSIZE=0
RP_DATASOURCE_IDLETIMEOUT=30000
RP_DATASOURCE_MAXLIFETIME=60000

Even with the above settings, it seems as though RP recreates at least 1 connection.

I am trying to run RP on aurora serverless to help with scaling costs. However, due to RP always having one connection, the serverless postgres db never scales down to 0 when its not in use.

Deep merge takes too long

Hello!

service api v.5.5.0

I run a deep merge of 2 launches:
launch 1: 6274 test_items
launch 2: 3204 test_items

It takes 1750 sec (29 minutes) to merge them.
It happens because of this query:
https://github.com/reportportal/service-api/blob/develop/src/main/java/com/epam/ta/reportportal/core/item/identity/TestItemUniqueIdGenerator.java#L87

The merge script pulls from db all parents for each test_item of each of the merging launches.
So in my case it sends 9478 database queries and each query pulls 3 entity.
Most of the time this script pulls the same test_items (the same suite, story, parent step).
Because of usage of findAllById() method Hibernate can not use any kind of cache to improve the performance of these queries.

I've added a simple HashMap cache to check if it can work faster.

Deep merge without caching:
9478 db queries
1750 sec

With cache:
366 db queries
366 item names cached
27690 cache hits
35 sec

Long merges can be a problem because during high load a merge procees locks other database queries and it can lead to API connection pool overflow and this error:
Caused by: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.

Service-API errors when ReportPortal user doesn't have an avatar

Newly created users don't have an avatar.
But service-api generates a lot of error logs related to the case when the user doesn't upload a photo.
In my opinion, it's not an error, and a user can be without an avatar.

Logs example,

2019-12-24 09:39:18.184 ERROR 1 --- [nio-8585-exec-3] .t.r.c.e.r.ReportPortalExceptionResolver : ReportPortalExceptionResolver > Error in handled Request. Please, check specified parameters: 'User - 'some.special.user' does not have a photo.'
com.epam.ta.reportportal.exception.ReportPortalException: Error in handled Request. Please, check specified parameters: 'User - 'some.special.user' does not have a photo.'
	at com.epam.ta.reportportal.binary.impl.UserBinaryDataServiceImpl.lambda$loadUserPhoto$1(UserBinaryDataServiceImpl.java:98)
	at java.util.Optional.orElseThrow(Optional.java:290)
	at com.epam.ta.reportportal.binary.impl.UserBinaryDataServiceImpl.loadUserPhoto(UserBinaryDataServiceImpl.java:97)
	at com.epam.ta.reportportal.core.file.impl.GetFileHandlerImpl.getUserPhoto(GetFileHandlerImpl.java:65)
	at com.epam.ta.reportportal.ws.controller.FileStorageController.getMyPhoto(FileStorageController.java:77)
	at com.epam.ta.reportportal.ws.controller.FileStorageController$$FastClassBySpringCGLIB$$ba8a78c4.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:353)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
	at com.epam.ta.reportportal.ws.controller.FileStorageController$$EnhancerBySpringCGLIB$$57078f61.getMyPhoto(<generated>)
	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.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)

Plugins installation error

Hi, I'm trying to install Jira plugin and it's failing

api-59767c459d-qvtbj api io.minio.errors.ErrorResponseException: The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.
api-59767c459d-qvtbj api     at io.minio.MinioClient.executeReq(MinioClient.java:1220)
api-59767c459d-qvtbj api     at io.minio.MinioClient.execute(MinioClient.java:1082)
api-59767c459d-qvtbj api     at io.minio.MinioClient.executePut(MinioClient.java:1446)
api-59767c459d-qvtbj api     at io.minio.MinioClient.makeBucket(MinioClient.java:3744)
api-59767c459d-qvtbj api     at io.minio.MinioClient.makeBucket(MinioClient.java:3650)
api-59767c459d-qvtbj api     at com.epam.ta.reportportal.filesystem.distributed.minio.MinioDataStore.save(MinioDataStore.java:63)
api-59767c459d-qvtbj api     at com.epam.ta.reportportal.core.integration.plugin.impl.PluginLoaderImpl.saveToDataStore(PluginLoaderImpl.java:114)
api-59767c459d-qvtbj api     at com.epam.ta.reportportal.plugin.Pf4jPluginManager.savePlugin(Pf4jPluginManager.java:519)
api-59767c459d-qvtbj api     at com.epam.ta.reportportal.plugin.Pf4jPluginManager.copyPlugin(Pf4jPluginManager.java:464)
api-59767c459d-qvtbj api     at com.epam.ta.reportportal.plugin.Pf4jPluginManager.lambda$uploadPlugin$17(Pf4jPluginManager.java:314)
api-59767c459d-qvtbj api     at java.base/java.util.Optional.map(Unknown Source)
api-59767c459d-qvtbj api     at com.epam.ta.reportportal.plugin.Pf4jPluginManager.uploadPlugin(Pf4jPluginManager.java:313)
api-59767c459d-qvtbj api     at com.epam.ta.reportportal.core.integration.plugin.impl.CreatePluginHandlerImpl.uploadPlugin(CreatePluginHandlerImpl.java:56)
api-59767c459d-qvtbj api     at com.epam.ta.reportportal.ws.controller.PluginController.uploadPlugin(PluginController.java:72)
api-59767c459d-qvtbj api     at com.epam.ta.reportportal.ws.controller.PluginController$$FastClassBySpringCGLIB$$8fa8cb26.invoke(<generated>)
api-59767c459d-qvtbj api     at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
api-59767c459d-qvtbj api     at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)
api-59767c459d-qvtbj api     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
api-59767c459d-qvtbj api     at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
api-59767c459d-qvtbj api     at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:366)
api-59767c459d-qvtbj api     at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99)
api-59767c459d-qvtbj api     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
api-59767c459d-qvtbj api     at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
api-59767c459d-qvtbj api     at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:69)
api-59767c459d-qvtbj api     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
api-59767c459d-qvtbj api     at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
api-59767c459d-qvtbj api     at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
api-59767c459d-qvtbj api     at com.epam.ta.reportportal.ws.controller.PluginController$$EnhancerBySpringCGLIB$$2f1e3850.uploadPlugin(<generated>)
api-59767c459d-qvtbj api     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
api-59767c459d-qvtbj api     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
api-59767c459d-qvtbj api     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
api-59767c459d-qvtbj api     at java.base/java.lang.reflect.Method.invoke(Unknown Source)
api-59767c459d-qvtbj api     at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
api-59767c459d-qvtbj api     at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
api-59767c459d-qvtbj api     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
api-59767c459d-qvtbj api     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)
api-59767c459d-qvtbj api     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
api-59767c459d-qvtbj api     at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
api-59767c459d-qvtbj api     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
api-59767c459d-qvtbj api     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
api-59767c459d-qvtbj api     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
api-59767c459d-qvtbj api     at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
api-59767c459d-qvtbj api     at javax.servlet.http.HttpServlet.service(HttpServlet.java:665)
api-59767c459d-qvtbj api     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
api-59767c459d-qvtbj api     at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
api-59767c459d-qvtbj api     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
api-59767c459d-qvtbj api     at org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:125)
api-59767c459d-qvtbj api     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
api-59767c459d-qvtbj api     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
api-59767c459d-qvtbj api     at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
api-59767c459d-qvtbj api     at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
api-59767c459d-qvtbj api     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
api-59767c459d-qvtbj api     at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:118)
api-59767c459d-qvtbj api     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
api-59767c459d-qvtbj api     at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
api-59767c459d-qvtbj api     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
api-59767c459d-qvtbj api     at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
api-59767c459d-qvtbj api     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
api-59767c459d-qvtbj api     at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:158)
api-59767c459d-qvtbj api     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
api-59767c459d-qvtbj api     at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
api-59767c459d-qvtbj api     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
api-59767c459d-qvtbj api     at org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:180)
api-59767c459d-qvtbj api     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
api-59767c459d-qvtbj api     at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
api-59767c459d-qvtbj api     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
api-59767c459d-qvtbj api     at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:92)
api-59767c459d-qvtbj api     at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:77)
api-59767c459d-qvtbj api     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
api-59767c459d-qvtbj api     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
api-59767c459d-qvtbj api     at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
api-59767c459d-qvtbj api     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
api-59767c459d-qvtbj api     at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
api-59767c459d-qvtbj api     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
api-59767c459d-qvtbj api     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
api-59767c459d-qvtbj api     at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
api-59767c459d-qvtbj api     at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
api-59767c459d-qvtbj api     at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
api-59767c459d-qvtbj api     at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
api-59767c459d-qvtbj api     at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
api-59767c459d-qvtbj api     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
api-59767c459d-qvtbj api     at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
api-59767c459d-qvtbj api     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
api-59767c459d-qvtbj api     at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:109)
api-59767c459d-qvtbj api     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
api-59767c459d-qvtbj api     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
api-59767c459d-qvtbj api     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
api-59767c459d-qvtbj api     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
api-59767c459d-qvtbj api     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
api-59767c459d-qvtbj api     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
api-59767c459d-qvtbj api     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
api-59767c459d-qvtbj api     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
api-59767c459d-qvtbj api     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
api-59767c459d-qvtbj api     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
api-59767c459d-qvtbj api     at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747)
api-59767c459d-qvtbj api     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
api-59767c459d-qvtbj api     at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)
api-59767c459d-qvtbj api     at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
api-59767c459d-qvtbj api     at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
api-59767c459d-qvtbj api     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639)
api-59767c459d-qvtbj api     at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
api-59767c459d-qvtbj api     at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
api-59767c459d-qvtbj api     at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
api-59767c459d-qvtbj api     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
api-59767c459d-qvtbj api     at java.base/java.lang.Thread.run(Unknown Source)

I using MinIO as proxy to AWS S3:

s3-minio-689dddbdff-9s74h minio API: PutBucket(bucket=rp-bucket)
s3-minio-689dddbdff-9s74h minio Time: 17:02:53 UTC 04/27/2020
s3-minio-689dddbdff-9s74h minio RequestID: 1609BBEDC0EB9DB8
s3-minio-689dddbdff-9s74h minio RemoteHost: 10.129.21.211
s3-minio-689dddbdff-9s74h minio Host: rp-s3-minio:9000
s3-minio-689dddbdff-9s74h minio UserAgent: MinIO (amd64; amd64) minio-java/dev
s3-minio-689dddbdff-9s74h minio Error: The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.
s3-minio-689dddbdff-9s74h minio        4: cmd/api-errors.go:1692:cmd.toAPIErrorCode()
s3-minio-689dddbdff-9s74h minio        3: cmd/api-errors.go:1717:cmd.toAPIError()
s3-minio-689dddbdff-9s74h minio        2: cmd/bucket-handlers.go:466:cmd.objectAPIHandlers.PutBucketHandler()
s3-minio-689dddbdff-9s74h minio        1: net/http/server.go:1995:http.HandlerFunc.ServeHTTP()

According to your code, this is hardcoded name: https://github.com/reportportal/commons-dao/blob/master/src/main/java/com/epam/ta/reportportal/filesystem/distributed/minio/MinioDataStore.java#L44

How can I fix this?

Thanks in advance

Sorting TestItems by endTime throws a SQL error

When attempting to sort TestItems query by endTime, the API throws a SQL exception:

API Version 5.3.5

ERROR: column \"test_item_results.end_time\" must appear in the GROUP BY clause or be used in an aggregate function\n Position: 68]"

"message": "Unclassified error [SQL [with \"filtered\" as (select \"public\".\"test_item\".\"item_id\" as \"id\", \"test_item_results\".\"end_time\" as \"endTime\" from \"public\".\"test_item\" left outer join \"public\".\"launch\" on \"public\".\"test_item\".\"launch_id\" = \"public\".\"launch\".\"id\" left outer join \"public\".\"test_item_results\" on \"public\".\"test_item\".\"item_id\" = \"public\".\"test_item_results\".\"result_id\" where (\"test_item\".\"launch_id\" = ? and \"test_item\".\"parent_id\" = ?) group by \"public\".\"test_item\".\"item_id\" having max(\"public\".\"test_item\".\"type\") = ?::\"public\".\"test_item_type_enum\" order by \"test_item_results\".\"end_time\" asc, \"test_item\".\"item_id\" asc limit ?) select \"public\".\"test_item\".\"item_id\", \"public\".\"test_item\".\"name\", \"public\".\"test_item\".\"code_ref\", \"public\".\"test_item\".\"type\", \"public\".\"test_item\".\"start_time\", \"public\".\"test_item\".\"description\", \"public\".\"test_item\".\"last_modified\", \"public\".\"test_item\".\"path\", \"public\".\"test_item\".\"unique_id\", \"public\".\"test_item\".\"uuid\", \"public\".\"test_item\".\"test_case_id\", \"public\".\"test_item\".\"test_case_hash\", \"public\".\"test_item\".\"parent_id\", \"public\".\"test_item\".\"retry_of\", \"public\".\"test_item\".\"has_children\", \"public\".\"test_item\".\"has_stats\", \"public\".\"test_item\".\"has_retries\", \"public\".\"test_item\".\"launch_id\", \"public\".\"test_item_results\".\"status\", \"public\".\"test_item_results\".\"end_time\", \"public\".\"test_item_results\".\"duration\", \"public\".\"item_attribute\".\"key\", \"public\".\"item_attribute\".\"value\", \"public\".\"item_attribute\".\"system\", \"public\".\"parameter\".\"item_id\", \"public\".\"parameter\".\"key\", \"public\".\"parameter\".\"value\", \"public\".\"statistics_field\".\"name\", \"public\".\"statistics\".\"s_counter\", \"public\".\"issue\".\"issue_id\", \"public\".\"issue\".\"auto_analyzed\", \"public\".\"issue\".\"ignore_analyzer\", \"public\".\"issue\".\"issue_description\", \"public\".\"issue_type\".\"locator\", \"public\".\"issue_type\".\"abbreviation\", \"public\".\"issue_type\".\"hex_color\", \"public\".\"issue_type\".\"issue_name\", \"public\".\"issue_group\".\"issue_group\", \"public\".\"ticket\".\"id\", \"public\".\"ticket\".\"bts_project\", \"public\".\"ticket\".\"bts_url\", \"public\".\"ticket\".\"ticket_id\", \"public\".\"ticket\".\"url\", \"public\".\"pattern_template\".\"id\", \"public\".\"pattern_template\".\"name\" from \"public\".\"test_item\" join \"filtered\" on \"public\".\"test_item\".\"item_id\" = \"filtered\".\"id\" left outer join \"public\".\"launch\" on \"public\".\"test_item\".\"launch_id\" = \"public\".\"launch\".\"id\" left outer join \"public\".\"test_item_results\" on \"public\".\"test_item\".\"item_id\" = \"public\".\"test_item_results\".\"result_id\" left outer join \"public\".\"item_attribute\" on \"public\".\"test_item\".\"item_id\" = \"public\".\"item_attribute\".\"item_id\" left outer join \"public\".\"statistics\" on \"public\".\"test_item\".\"item_id\" = \"public\".\"statistics\".\"item_id\" left outer join \"public\".\"statistics_field\" on \"public\".\"statistics\".\"statistics_field_id\" = \"public\".\"statistics_field\".\"sf_id\" left outer join \"public\".\"pattern_template_test_item\" on \"public\".\"test_item\".\"item_id\" = \"public\".\"pattern_template_test_item\".\"item_id\" left outer join \"public\".\"pattern_template\" on \"public\".\"pattern_template_test_item\".\"pattern_id\" = \"public\".\"pattern_template\".\"id\" left outer join \"public\".\"issue\" on \"public\".\"test_item_results\".\"result_id\" = \"public\".\"issue\".\"issue_id\" left outer join \"public\".\"issue_type\" on \"public\".\"issue\".\"issue_type\" = \"public\".\"issue_type\".\"id\" left outer join \"public\".\"issue_group\" on \"public\".\"issue_type\".\"issue_group_id\" = \"public\".\"issue_group\".\"issue_group_id\" left outer join \"public\".\"issue_ticket\" on \"public\".\"issue\".\"issue_id\" = \"public\".\"issue_ticket\".\"issue_id\" left outer join \"public\".\"ticket\" on \"public\".\"issue_ticket\".\"ticket_id\" = \"public\".\"ticket\".\"id\" left outer join \"public\".\"parameter\" on \"public\".\"test_item\".\"item_id\" = \"public\".\"parameter\".\"item_id\" left outer join \"public\".\"item_attribute\" as \"launchAttribute\" on \"public\".\"launch\".\"id\" = \"launchAttribute\".\"launch_id\" order by \"test_item_results\".\"end_time\" asc, \"test_item\".\"item_id\" asc]; ERROR: column \"test_item_results.end_time\" must appear in the GROUP BY clause or be used in an aggregate function\n Position: 68]"

Querying launches started during the last two days

I'm having trouble getting the ReportPortal API "launch-controller" query parameters in place. Seems that there is not really any documentation how to actually use the API or what values you can put in.

The situation is that I would like to search through the API for all the launches that has started say during the last two days. The API documentation from the ReportPortal UI shows a parameter "filter.eq.startTime", but I do not wish to "eq" on a single timestamp. It seems that you can also use filters like "filter.cnt.name=foo" as I figured from the UI filter options and by trial & error, but how to enter a time range I do not have any clue. I have tried to look from the code etc, but with no answer yet.

  1. How do you enter a time range for API search filter?
  2. Is there any documentation or examples on how to use the ReporPortal API?

BUG: API /api/v1/{project}/item/history cannot return correct when the length of filter.in.testCaseHash is bigger than 20

When setting "type=comparing" and the number of filter.in.testCaseHash is bigger than 20, there is issue in the return json.
For example, in the following API, there are 25 items in filter.in.testCaseHash:
api/v1/superadmin_personal/item/history?historyDepth=1&type=comparing&filterId=2&launchesLimit=600&isLatest=true&filter.in.testCaseHash=-809227041,-38253239,1839249082,-1522254505,1402253705,901225426,146180582,-1145417100,-1132021116,-1154120765,-43765001,-621623562,1170344421,-1543011688,-1539317604,920890918,538643070,-2113662964,-2085033813,-2056404662,-2027775511,-1970517209,-1941888058,-1913258907,-1884629756

the API only get 20 items (instead of 25) in the return list.

[v5bug] POST /{projectName}/async/item accepts invalid launch_id.

I'm testing the v5 /async/item endpoint and it apparently accepts whatever invalid launch_id string value. What's more, it returns 201 and a new test case UUID so I have a suspicion it might also create an orphaned item in the db. This test item is nowhere to be found using API.

curl

curl -X POST "http://10.0.148.252:8080/api/v1/superadmin_personal/async/item" -H "accept: */*" -H "Content-Type: application/json" -H "Authorization: bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NjM3NDU5NDQsInVzZXJfbmFtZSI6InN1cGVyYWRtaW4iLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOSVNUUkFUT1IiXSwianRpIjoiZWYzY2NkOGMtOWQ5Mi00OWU1LWE3YmMtODZlYjRiNTNkNzMyIiwiY2xpZW50X2lkIjoidWkiLCJzY29wZSI6WyJ1aSJdfQ.3B0NZ5Ysan7KLMPwvxTfMuDMYv35JOBdfd0CVxgjY6Y" -d "{ \"attributes\": [ { \"key\": \"string\", \"system\": true, \"value\": \"string\" } ], \"description\": \"string\", \"hasStats\": true, \"launchId\": \"invalid_launch_id\", \"location\": \"string\", \"name\": \"vana1\", \"parameters\": [ { \"key\": \"string\", \"value\": \"string\" } ], \"retry\": true, \"startTime\": \"2019-07-20T21:53:31.779Z\", \"type\": \"SUITE\", \"uniqueId\": \"vana1id\"}"

request url

http://rp_beta.io:8080/api/v1/superadmin_personal/async/item

response code

201

response body

Response body{   "uuid": "f916bdb4-aabf-4956-9c80-8c7c210115b2" }
--

This might be the issue with the other POST methods for this controller too

/v1/{projectName}/item pagination bug

Page 0 and 1 have same values.

/api/v1/seco-e2e/item?filter.eq.hasChildren=false&filter.eq.launchId=422&filter.eq.type=STEP&isLatest=false&page.page=0&page.size=3

/api/v1/seco-e2e/item?filter.eq.hasChildren=false&filter.eq.launchId=422&filter.eq.type=STEP&isLatest=false&page.page=1&page.size=3

If we have 176 rows divided by 10 per page we have 19 pages instead of 18.

ReportPortal version:
Build: 5.7.0
© Report Portal 2022 All rights reserved

Use files for passwords

Docker swarm uses files for passing secrets into containers. It would be nice to have that as a configuration option.

Massive log messages when users don't have photos make diagnosing other issues harder

The service-api pod log is full of:

com.epam.ta.reportportal.exception.ReportPortalException: Error in handled Request. Please, check specified parameters: 'User - 'superadmin' does not have a photo.'
        at com.epam.ta.reportportal.binary.impl.UserBinaryDataServiceImpl.lambda$loadUserPhoto$1(UserBinaryDataServiceImpl.java:98)
        at java.util.Optional.orElseThrow(Optional.java:290)
        at com.epam.ta.reportportal.binary.impl.UserBinaryDataServiceImpl.loadUserPhoto(UserBinaryDataServiceImpl.java:97)
        at com.epam.ta.reportportal.core.file.impl.GetFileHandlerImpl.getUserPhoto(GetFileHandlerImpl.java:65)
        at com.epam.ta.reportportal.ws.controller.FileStorageController.getMyPhoto(FileStorageController.java:77)
        at com.epam.ta.reportportal.ws.controller.FileStorageController$$FastClassBySpringCGLIB$$ba8a78c4.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:353)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
        at com.epam.ta.reportportal.ws.controller.FileStorageController$$EnhancerBySpringCGLIB$$5cb69b89.getMyPhoto(<generated>)
        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.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:125)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:118)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:158)

Cannot update launch with tag without key value pair

Hello guys,

I have faced next case:

We can't update launch with email name (or another value) in attribute, if email is set as tag (without key/value pair). But we can set email in tags if we set it on launch creation.

Create launch with api /v1/{projectName}/launch. Use next body:
{
"attributes": [
{
"key": "email",
"value": "[email protected]"
},
"email@[email protected]"
],
"description": "string",
"mode": "DEFAULT",
"name": "Test_attribute",
"rerunOf": "string",
"startTime": "2020-04-15T07:39:20.951Z"
}

Launch is created successfully with all defined tags:
image

Then try to update this launch with api /v1/{projectName}/launch/{launchId}/update
Body:
{
"attributes": [
{
"key": "another_email",
"value": "[email protected]"
},
"[email protected]"
],
"description": "string",
"mode": "DEFAULT"
}

Response 400:
{
"errorCode": 4001,
"message": "Incorrect Request. JSON parse error: Cannot construct instance of com.epam.ta.reportportal.ws.model.attribute.ItemAttributeResource (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('[email protected]'); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of com.epam.ta.reportportal.ws.model.attribute.ItemAttributeResource (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('[email protected]')\n at [Source: (PushbackInputStream); line: 7, column: 1] (through reference chain: com.epam.ta.reportportal.ws.model.launch.UpdateLaunchRQ["attributes"]->java.util.HashSet[1])"
}

service-api gets unhealthy state after postgresSQL deadlock

I am not sure, if this is correct place for this issue... Suddenly service-api noticed postgreSQL deadlock while updating test-results. What might cause this?
We have docker solution in use and latest docker-compose.yml without modifications
Only change we made was this elastic search data folder group and rights change based on ReportPortal documentation. This was mandatory.
Known issue 1

Caused by: org.postgresql.util.PSQLException: ERROR: deadlock detected Detail: Process 7473 waits for ShareLock on transaction 6373; blocked by process 7359. Process 7359 waits for ShareLock on transaction 7083; blocked by process 7473. Hint: See server log for query details. Where: while updating tuple (3,192) in relation "test_item_results"
reportportal.zip

Unable to login with SAML into RP after upgrading from 5.3.5 to 5.7.4

We are unable to access ReportPortal through our SAML integration and getting 400 Bad request, BAD SAML error.
Please look into the logs and help us resolve the error.
RP Logs.docx
Logs:

ERROR 1 --- [io-8585-exec-34] .AuthUtils$SerialUidReplacingInputStream : Potentially Fatal Deserialization Operation.
java.io.InvalidClassException: Overriding serialized class version mismatch: local serialVersionUID = 550 stream serialVersionUID = 520
ERROR 1 --- [nio-9999-exec-7] .t.r.c.e.r.ReportPortalExceptionResolver : ReportPortalExceptionResolver > Auth integration 'Oauth settings with id = github have not been found.' not found. Did you use correct name?
com.epam.ta.reportportal.exception.ReportPortalException: Auth integration 'Oauth settings with id = github have not been found.' not found. Did you use correct name?

RP service-aut logs.docx

{ProjectName} in URI is case sensitive for getting items

Steps:

  1. Create launch
  2. Create test
  3. Get tests in the launch

Result:

Response Body: {"error_code":40010,"message":"Forbidden operation. Specified launch with id '5bfe491c3cdea20001229aba' not referenced to specified project 'Ci-agents-checks'"}

You can see that client used Ci-agents-checks project name for all requests. Please see curl commands to reproduce the issue: Issue.txt

Workaround:
The issue is not reproducible if client uses ci-agents-checks project name (lower case c).

TestNG | Retry Analyser brings inconsistency on the terminating launches on RP

Describe the bug
If I had a retry analyser to an AnnotationTransformer, the launches start to be inconsistent regarding the terminating launch.
I use v4 in k8 and works perfectly

To Reproduce
Retry.class

@Override
    public boolean retry(ITestResult iTestResult) {
        if (iTestResult.getStatus() == ITestResult.FAILURE) {                      //Check if test not succeed
           if (count < maxTry) {                            //Check if maxtry count is reached
                count++;                                     //Increase the maxTry count by 1
                //Mark test as failed

                return true;                                 //Tells TestNG to re-run the test
            }

        }
        return false;
    }

AnnotationTransformer.class

   @Override
    public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {
        annotation.setRetryAnalyzer(Retry.class);

    }

values.yaml

serviceindex:
  name: Index Service
  repository: reportportal/service-index
  tag: 5.0.3
  pullPolicy: Always
  resources:
    requests:
      cpu: 150m
      memory: 128Mi
    limits:
      cpu: 200m
      memory: 256Mi
  service:
    type: ClusterIP
    port: 8080
    aanotations: {}

uat:
  repository: reportportal/service-authorization
  name: Authorization Service
  tag: 5.0.0-BETA-12
  pullPolicy: Always
  resources:
    requests:
      cpu: 100m
      memory: 512Mi
    limits:
      cpu: 500m
      memory: 2048Mi
  sessionLiveTime: 86400
  service:
    type: ClusterIP
    port: 9999
    aanotations: {}

serviceui:
  repository: reportportal/service-ui
  tag: 5.0.0-BETA-12
  name: UI Service
  pullPolicy: Always
  resources:
    requests:
      cpu: 100m
      memory: 64Mi
    limits:
      cpu: 200m
      memory: 128Mi
  service:
    type: ClusterIP
    port: 8080
    aanotations: {}

serviceapi:
  repository: reportportal/service-api
  tag: 5.0.0-BETA-12
  name: API Service
  pullPolicy: Always
  resources:
    requests:
      cpu: 500m
      memory: 1024Mi
    limits:
      cpu: 1000m
      memory: 2048Mi
  service:
    type: ClusterIP
    port: 8585
    aanotations: {}

migrations:
  repository: reportportal/migrations
  tag: 5.0.0-BETA-8
  pullPolicy: Always
  resources:
    requests:
      cpu: 100m
      memory: 64Mi
    limits:
      cpu: 100m
      memory: 128Mi

serviceanalyzer:
  repository: reportportal/service-analyzer
  tag: 5.0.0-BETA-4
  name: Analyzer Service
  pullPolicy: Always
  resources:
    requests:
      cpu: 100m
      memory: 64Mi
    limits:
      cpu: 100m
      memory: 128Mi
  service:
    type: ClusterIP
    port: 8080
    aanotations: {}

rabbitmq:
  SecretName: ""
  installdep:
    enable: false
  endpoint:
    external: true
    address: <rabbitmq_chart_name>-rabbitmq-ha.default.svc.cluster.local
    port: 5672
    user: rabbitmq
    apiport: 15672
    apiuser: rabbitmq

postgresql:
  SecretName: ""
  installdep:
    enable: false
  endpoint:
    external: true
    cloudservice: false
    address: <postgresql_chart_name>-postgresql.default.svc.cluster.local
    port: 5432
    user: rpuser
    dbName: reportportal
    password:

elasticsearch:
  installdep:
    enable: false
  endpoint:
    external: true
    cloudservice: false
    address: <es_chart_name>-elasticsearch-coordinating-only.default.svc.cluster.local
    port: 9200

# Ingress configuration for the ui
# If you have installed ingress controller and want to expose application - set INGRESS.ENABLE to true.
# If you have some domain name set INGRESS.USEDOMAINNAME variable to true and set this fqdn to INGRESS.HOSTS
# If you don't have any domain names - set INGRESS.USEDOMAINNAME to false
ingress:
  enable: true
  # IF YOU HAVE SOME DOMAIN NAME SET INGRESS.USEDOMAINNAME to true
  usedomainname: false
  hosts:
    - reportportal.k8.com
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/x-forwarded-prefix: /$1
    nginx.ingress.kubernetes.io/proxy-body-size: 128m

# node selector for all components, if any
nodeSelector:
  enabled: false
  selector:
    reportportal: true


# RBAC is required for service-index in order to collect status/info over all services
rbac:
  create: true
  serviceAccount:
      create: true
      name: reportportal

rp:
  infoEndpoint: "/info"
  healthEndpoint: "/health"

Desktop (please complete the following information):

  • OS: [iOS]
  • Browser [chrome]
  • Version [77.0.3865.90]

Upload of .zip with tests results via HTTP api, Premature end of file error, missing more details for the error ++ input checks

I did some uploads of .zip with tests results via HTTP launch/import endpoint.
For one case I received Premature end of file error. I'm missing more details for the error ++ some input checks.
I had to "Force finish" the launch from the UI, import didn't end or recovered from this error.

Used version: https://github.com/rsvoboda/rsvoboda-playground/blob/master/reportportal.io/docker-compose-4.2.0.yml
Used zip: zzz.zip
Tested workflow: https://github.com/rsvoboda/rsvoboda-playground/tree/master/reportportal.io#push-of-zip-with-test-results

Details I would expect:

  • file name from the zip which caused the problem

Input checks I would expect:

  • file size > 0
  • (xml) file is well formed
  • file has known / parsable format (I noticed that api_1 service was parsing WildFly server configurations included in zzz.zip )

Recovery from the error:

  • I would expect import to proceed, skipping the problematic item
  • if it's hard to recover from the import, launch processing should be canceled automatically to avoid need of "Force finish" from the UI

Possible root cause:
Based on the error I assume problem is with the following xml file 0 09-20-2018 14:19 target/test-output/SmokeStandaloneTestCase/emptyConfigFile/empty.xml. I assume your service can't handle corrupted / 0 length xml file.

I added all my feedback into one issue, feel free to split it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.