After upgrade to 5.2.3, all dashboard names have addtional object stream_title type and cant be shared

Before you post: Your responses to these questions will help the community help you. Please complete this template if you’re asking a support question.
Don’t forget to select tags to help index your topic!

1. Describe your incident:

I was running version 5.1.5 , it was OK. Then I decided it si time to upgrade to 5.2.x .
After the upgrade, I got errors when accesing Share part of Dashboards
" Preparing shares for “dashboard” failed with status:type <stream_title> does not exist. There was an error fetching a resource : Internal server error. Additional information : type <stream_title> does not exist,

The dashboards still work, just I can not acces Sharing part of them.

2. Describe your environment:

  • OS Information:
    Oracle Linux 8.7
  • Package Version:
    graylog RPM package 5.2.3
    mongodb 5.0
    opensearch 1.x (5 nodes)
    3 graylog servers in a cluster
    5 opensearch nodes

3. What steps have you already taken to try and solve the problem?

I checked mongodb logs but notging found. My graylog logs have this :

java.lang.IllegalArgumentException: type <stream_title> does not exist
        at org.graylog.grn.GRNRegistry.lambda$newGRNBuilder$0(GRNRegistry.java:138) ~[graylo
g.jar:?]
        at java.util.Optional.orElseThrow(Unknown Source) ~[?:?]
        at org.graylog.grn.GRNRegistry.newGRNBuilder(GRNRegistry.java:138) ~[graylog.jar:?]
        at org.graylog.grn.GRNRegistry.newGRN(GRNRegistry.java:100) ~[graylog.jar:?]
        at org.graylog.security.entities.EntityDependencyResolver.lambda$resolve$3(EntityDep
endencyResolver.java:88) ~[graylog.jar:?]
        at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) ~[?:?]
        at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) ~[?:?]
        at java.util.Iterator.forEachRemaining(Unknown Source) ~[?:?]
        at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source) ~[?:?
]
        at java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[?:?]
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) ~[?:?]
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source) ~[?:?]
        at java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[?:?]
        at java.util.stream.ReferencePipeline.collect(Unknown Source) ~[?:?]
        at org.graylog.security.entities.EntityDependencyResolver.resolve(EntityDependencyRe
solver.java:90) ~[graylog.jar:?]
        at org.graylog.security.shares.EntitySharesService.checkMissingPermissionsOnDependen
cies(EntitySharesService.java:307) ~[graylog.jar:?]
        at org.graylog.security.shares.EntitySharesService.prepareShare(EntitySharesService.java:110) ~[graylog.jar:?]
        at org.graylog.security.rest.EntitySharesResource.prepareShare(EntitySharesResource.java:124) ~[graylog.jar:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
        at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) ~[graylog.jar:?]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:134) ~[graylog.jar:?]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:177) ~[graylog.jar:?]
        at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) ~[graylog.jar:?]
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:81) ~[graylog.jar:?]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) ~[graylog.jar:?]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) ~[graylog.jar:?]
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) ~[graylog.jar:?]
        at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:255) [graylog.jar:?]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) [graylog.jar:?]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) [graylog.jar:?]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:292) [graylog.jar:?]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:274) [graylog.jar:?]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:244) [graylog.jar:?]
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) [graylog.jar:?]
        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:234) [graylog.jar:?]
        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684) [graylog.jar:?]
        at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:356) [graylog.jar:?]
        at org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:200) [graylog.jar:?]
        at com.codahale.metrics.InstrumentedExecutorService$InstrumentedRunnable.run(InstrumentedExecutorService.java:180) [graylog.jar:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
        at java.lang.Thread.run(Unknown Source) [?:?]
2024-02-06T15:45:20.645+01:00 ERROR [AnyExceptionClassMapper] Unhandled exception in REST resource
java.lang.IllegalArgumentException: type <stream_title> does not exist


Additionaly, I decided to do a COntent pack of Dashboard, as there one can see more inside structure. And indeed, I got this strange output after I selected all Dashboards and clicked next:
For every Dashboard, there is additional object with same name of type “stream_title”

  Entity List

      DasboardONE	dashboard		
      DashboardTWO  dashboard
      DashboardONE   stream_title
      DashboardTWO  stream_title
   ...

As a next step,I selected just one dashborad “mydashboard” and exported it into Content pack. There was thid additional module about stream_title:

     {
      "v": "1",
      "type": {
        "name": "stream_title",
        "version": "1"
      },
      "id": "193598ec-48ad-42c3-881b-d76e73a318a1",
      "data": {
        "title": {
          "@type": "string",
          "@value": "myDashboard"
        }
      },
      "constraints": [
        {
          "type": "server-version",
          "version": ">=5.2.3+9aee303"

As a next step I deleted this part out ouf json file. In graylog I deleted MyDashboard and then I imported this corrected Content pack and Seltectec Install.

I still got several errors, that content pack can not be installed. There was Fetch error.

I guess somehow, maybe even before upgrade my config was a bit messed regarding Dashboards and I havent restarted graylog for months.
It could also be that the upgrade has something to do wih this, but anyway, now I got new objects :slight_smile:

4. How can the community help?

I have many complicated dashboards. So I am looking for info how to “clean” them of this additional “stream_title”. Maybe the way to do it is to go into mongodb and there make the change.? . Or continue down the path of Content pack and import.

Helpful Posting Tips: Tips for Posting Questions that Get Answers [Hold down CTRL and link on link to open tips documents in a separate tab]

There is an active bug that I think you are dealing with. Sharing a Stream Scoped Entity fails with error · Issue #17882 · Graylog2/graylog2-server · GitHub

Also there are some changes afoot in content packs and streams as content packs didn’t really support stream limitations on dashboards etc and that’s in the process of being worked on.

1 Like

Thank you a lot Joel.
I opened the link you provided and it contains workaround:
" 1. Remove any Streams from entity that needs to be shared
2. Share the entity (and dependent Stream)
3. Add Stream back to entity!

somehow I dont see how to implement this in my scenario…how to remove streams from all Dashboards . "

So where to continue. I see 2 paths…
a) downgrade from 5.2.3 to previous version 5.1 . I hope this is suported ? I have time next week to do that and will report here how it goes

b) If a fails, maybe this, more risky one ? Open saved COntent pack containing all Dashboards, deleting form it all instances od stram_title, deleting all Dashboard form graylog installation and trying to recreate them with installation of edited Content pack

5.2.4 is dropping this morning, and contains the fix for this.

1 Like

Thanks a lot! after upgrade to 5.2.4 these errors “stream_title” are gone.