The following screen, as opposed to the previous one, displays the create and import buttons on the top right of the screen. Consequently, Bloom perspectives can be managed (renamed, Exported and Deleted) as shown below:
Reason 1: User restricted role
For users to be able to create and/or edit a perspective, they need to have WRITE access to the _Bloom_Perspective_ label and to the _Bloom_Scene_ label. WRITE access is only needed to these two labels specifically, not to the entire Database.
Connecting with a user possessing a Reader role or limited write permissions to the Bloom labels can also result in a read-only effect.
More detail about the Role-Based Access Control RBAC for perspectives and Scenes can be found here.
Reason 2: Read-Only State on Follower Servers
Solutions to Overcome Read-Only Constraints:
1. Enable Server Side Routing:
Enabling server-side routing in the database allows follower servers to redirect requests to a leader, enabling write operations.
2. Direct Connection to a Leader:
Connecting directly to a leader server ensures the ability to perform write operations, bypassing the read-only limitations on follower servers.
3. Use ConnectUrl with neo4j:// Protocol:
Utilising the connectUrl with the neo4j:// protocol as a query string parameter allows seamless redirection to a leader for write operations. More details can be found here here.
To confirm you are facing this issue, look for "WriteOperationsNotAllowedException," which indicates that no write operations are allowed directly on the follower database:
2024-01-31 11:29:21.910+0000 WARN [o.n.k.a.p.GlobalProcedures] An error occurred while trying to perform perspective operation. Please check server logs.
Caused by: org.neo4j.graphdb.WriteOperationsNotAllowedException: No write operations are allowed directly on this database. Writes must pass through the leader. The role of this server is: FOLLOWER
Reason3: Errors during the loading of perspectives
Under certain conditions, errors may arise during the loading of perspectives in Bloom. These errors could be caused by manual alterations to the _Bloom_Perspective_ nodes in the Database or from loading a database, that contains perspectives, from a dump predating Bloom 2.7.0 (bug fixed in Bloom 2.7.1).
Below is an example of an error when attempting to load Bloom perspectives when the roles property is set to null:
2024-02-12 12:14:33.743+0000 WARN [o.n.k.a.p.GlobalProcedures] Attemp to fetch node properties failed:
node could not be loaded although fetched initially org.neo4j.graphdb.NotFoundException:
No such property, 'roles'.