Skip to content

Commit

Permalink
V0.12.0 (#119)
Browse files Browse the repository at this point in the history
* Remove neo4j desktop dependency (#117)

* remove graph-app-kit, reinstall latest semantic-ui-react

* drastically simplify to remove Neo4j Desktop dependencies

* simplify to set HalinContext connection details, no longer using Neo4jDesktopAPI construct

* simplify to remove Neo4jDesktopAPI code path

* remove neo4jDesktop API shims

* rename directory Neo4jDesktop->initialConnection

* rename Neo4jDesktopApiStandin -> ConnectionDetailsProvider

* fix tests for Halin connection details method

* fixed missing default drop-down selection

* event log is shown for all clusters even single node

* improve pagination and table size to reduce wasted space

* in 4.0MR1, the returning signature of SHOW DATABASES changed a lot

* diagnostic collector now collects databases and statuses

* upgrade neo4j-driver@^4.0.0 GA release

* remove duplicate

* re-enable privilege actions

* remove useless componentWillMount

* revamping how status is assigned

* simplify/refactor database object creation

* adaptations for 4.0MR1 call dbms.cluster.overview changes

* refactored watchForClusterRoleChange to ClusterMember

* adapt for neo4j 4.0MR1 changes

* ignore testrig files

* permit parameterized transaction metric functions

* update documentation for TransactionsOpen

* default database assignment

* add isDefault accessor

* isNeo4jCloud -> isNeo4jAura

* database overview component

* simplify code in favor of databaseoverview component

* getMemberStatuses()

* Simple KB entry for database

* remove problematic popups with rendering issues in new react

* add keys

* create database pane, not modal

* convert from a modal to a pane

* update for 4.0mr1 syntax

* removed in favor of simpler approach

* Member database API changes (#118)

* refactor code into new object ClusterMemberSet

* API changes and refactoring

* testrig first commit

* PerformancePane -> ClusterMemberOverview

* refactor naming of node -> member (ClusterMembers)

* move old context popup information to member overview (freshness)

* overview goes first to mirror structure of member pane

* #operability notes

* members can score their own health

* databases can get their leaders, with the help of crazy #operability URI parsing code

* more database testing

* ClusterMember testing

* execute operations on systemDB writer

* fix administrative error

* deprecate the Ping component

* #operability note

* fix forced selection bug

* cluster member sets can merge changes in an ongoing way

* documentation

* merge method

* add payloads to cluster events

* first commit of database sets

* upgrade react-toastify@^5.4.1

* API CHANGE: databases() comes from DatabaseSet, not ClusterManager

* fix and expand testing

* system writer debugging

* refresh on new database information

* no systemdb writer is a critical error

* event management

* remove test

* listener tests

* factor out status icons

* add database list with status icons

* add member list with status icons

* housekeeping

* event log can be downloaded as CSV

* change Grant -> Access for 4.0MR1

* updated docs for API changes

* create database action only available neo4j >= 4

* single databases get renamed to default neo4j

* pre-4.0 dummy databases get the halin base URI as their address

* pre-4 we don't need 'database' value for a member

* GRANT WRITE is sensitive to excluding ELEMENTS from query

* controlled vocabulary

* initial testing

* use of controlled vocab

* increased testing

* improved testing

* database status has pop-up context information

* revamp NodeLabel for members

* improve layout

* double size

* check to see if a privilege allows entity

* include 4.0 database operations

* allow access to a map of reported errors

* refactor NodeLabel -> MemberLabel

* reuse MemberLabel component

* greatly simplify less is more

* stars and black lines refer to SYSTEM writer

* query generation for database operations

* DENIED privileges get a GRANT button

* cover reverseability of privileges

* remove conflicting icon property

* factor out privileges button

* more reverseability testing

* fix tests caused by Member API changes

* upgrade neo4j-driver

* fixed db #operability issue for 4.0 SINGLE

* add standalone flag

* updated documentation

* fix for pre-Neo4j 4.0 clusters

* remove bolt:// from host

* fix bad bug caused by extra =

* add store size information when you can

* plugin jmx 4 store size query

* calculate all store sizes

* simplification and unit testing

* change member ordering to ignore leader

* read replica config

* send LIMIT param as an int, fixing #ship issue

* database KB entry

* the default selection is the systemdb writer

* getMembersByRole deals with SINGLE for other databases

* upgrade docker to 4.0.0

* test against neo4j 4.0.0

* new 4.0 metric references

* upgrade neo4j

* double the slow feed timeout to 2 * window to reduce spam warnings

* factor out parameters

* I hate yaml

* CDT can build select filters for fields, by accessor

* remove noise

* factor out displayColumns

* fix neo4j driver typing issue

* refactor outside the export; no meaningful code changes here

* reduce the memory weight of test rig

* refactor runAllProbes ClusterMember->probes

* feature detection for Neo4j fabric

* ignore driver settings for fabric feature detection

* include Fabric feature detection

* usesFabric unit test

* FabricDesignator component

* fabric knowledgebase entries

* refactor special case from feature probes

* bugfix: don't show null total storesize on < Neo4j 4.0

* fix star icon bug for 3.5 cluster leaders

* reduce minimum page size

* TODO - make multi-database ready

* fixed special case bug that affected REVOKE of database-specific verbs

* edge condition: unavailable databases while reconciling

* more controllable "getLeader" behavior

* you can't administer reconciling databases

* don't display stats while DB is reconciling

* important safety tip kids

* SampleQueries now has selectable database option for multidb

* show neo4j version

* certificate trust change

* better role support detection

* v0.12.0 release notes
  • Loading branch information
moxious authored Jan 3, 2020
1 parent 66ce361 commit 71c64da
Show file tree
Hide file tree
Showing 104 changed files with 3,822 additions and 1,623 deletions.
20 changes: 19 additions & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ jobs:
no_output_timeout: 1200
command: |
ls -l src/components/
ls -l src/components/neo4jDesktop
# Take careful note of runInBand https://jestjs.io/docs/en/troubleshooting.html#tests-are-extremely-slow-on-docker-and-or-continuous-integration-ci-server
yarn test --runInBand
- run:
Expand Down Expand Up @@ -145,6 +144,25 @@ jobs:
mdavidallen/halin:latest npm run gather > /tmp/artifacts/halin-3.5.5.txt
docker logs neo4j355 > /tmp/artifacts/neo4j350.log
docker stop neo4j355
- run:
name: Test Against Neo4j 4.0.0 Enterprise
command: |
docker run -d --name neo4j400 --rm -p 127.0.0.1:7474:7474 -p 127.0.0.1:7687:7687 --env NEO4J_AUTH=neo4j/admin --env=NEO4J_ACCEPT_LICENSE_AGREEMENT=yes -t neo4j:4.0.0-enterprise
sleep 20
docker ps
export NEO4J_URI=bolt://localhost:7687
export NEO4J_USER=neo4j
export NEO4J_PASSWORD=admin
# Run gather against the temp docker image started.
docker run --network container:neo4j400 \
--env NEO4J_URI=bolt://localhost:7687 \
--env NEO4J_USERNAME=neo4j \
--env NEO4J_PASSWORD=admin \
mdavidallen/halin:latest npm run gather > /tmp/artifacts/halin-4.0.0.txt
docker logs neo4j400 > /tmp/artifacts/neo4j400.log
docker stop neo4j400
- run:
name: Test Against Neo4j 3.5.0 Community
command: |
Expand Down
19 changes: 19 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,20 @@ array of ClusterMember instances. Halin treats single-node databases as a clust
member. The HalinContext also has a ClusterManager object it can create, which handles cluster-
wide operations, such as mapping queries across a cluster (user management).

#### ClusterMemberSet

A HalinContext has a set of cluster members that gets maintained in an ongoing
way. As cluster members enter and exit, this is picked up in near-real time.
Cluster members in turn can be interrogated for which databases they are the
leader of, what capabilities they have, and so on.

#### DatabaseSet

A HalinContext also has a set of databases associated with it. Prior to Neo4j
4.0, this was generally only one default database named "neo4j", but with the
advent of Neo4j 4.0, there can be any number of databases managed by a cluster.
Databases in turn can be interrogated for who their leader is, and so on.

#### Feature Probes

Both the HalinContext object and the ClusterMembers that it has have the concept of feature
Expand All @@ -55,6 +69,11 @@ on top of the standard Neo4j driver. This was introduced because session creati
requires extra roundtrips in the bolt protocol, and session reuse is desirable for improving
latency to/from Neo4j.

By using the HalinContext object, you can always easily get the leader of
a particular database, which can be used to run mutating queries on any
database. So in this sense, Halin provides an overlay API which is similar to
driver routing, but more targetable than bolt+routing.

#### Error Reporting

Sentry is used throughout for error detection and reporting, and telemetry.
Expand Down
9 changes: 5 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "halin",
"description": "Halin helps you monitor and improve your Neo4j graph",
"version": "0.12.0-beta",
"version": "0.12.0",
"neo4jDesktop": {
"apiVersion": "^1.2.0"
},
Expand All @@ -23,11 +23,10 @@
"autobind-decorator": "2.2.1",
"bluebird": "^3.7.1",
"generic-pool": "^3.6.1",
"graph-app-kit": "^1.0.4",
"lodash": "^4.17.15",
"mathjs": "^5.4.0",
"moment": "^2.24.0",
"neo4j-driver": "^4.0.0-beta01",
"neo4j-driver": "^4.0.1",
"pondjs": "^0.9.0",
"prop-types": "^15.6.0",
"react": "^16.12.0",
Expand All @@ -40,8 +39,10 @@
"react-sortable-tree": "^2.2.0",
"react-table": "^6.8.6",
"react-timeseries-charts": "^0.16.1",
"react-toastify": "^5.1.0",
"react-toastify": "^5.4.1",
"ringjs": "^0.0.1",
"semantic-ui-css": "^2.4.1",
"semantic-ui-react": "^0.88.2",
"source-map-explorer": "^1.6.0",
"uri-parser": "^1.0.1",
"uuid": "^3.3.2",
Expand Down
13 changes: 13 additions & 0 deletions release-notes.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# Halin Release Notes

## 0.12.0 (Neo4j 4.0, Multi-database, and Fine-Grained Security)

- Status for both all cluster members and all databases. Users
can independently see the mapping between the two
- Halin API exposes a better cluster-wide API for fine-grained cluster
control, including ClusterMemberSet, DatabaseSet, and feature probes.
- Full support for GRANT/REVOKE/DENY of fine-grained privileges under Neo4j 4.0
- Support for tracking LEADER/FOLLOWER status in multi-database arrangements of 4.0
- Halin knows how to detect presence of Fabric enabled databases
- Removed Neo4j Desktop API dependencies, permitting upgrades to key components
(semantic-ui-react). As a result, users must always log in even when using as a
graph app.

## 0.12.0-beta

- Initial support for Neo4j 4.0 as of MR03; multiple databases now supported!
Expand Down
Loading

0 comments on commit 71c64da

Please sign in to comment.