neo4j 2.2.1-java → 2.2.3-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG CHANGED
@@ -1,3 +1,13 @@
1
+ == 2.2.3 / 2012-12-28
2
+ * Support for HA cluster with neo4j 1.9.X, #228, #99, #223
3
+ * Make sure the Identity map is cleared after an exception, #214
4
+ * Relationship other_node should return wrapped node, #226
5
+ * Automatically convert DateTimes to UTC, (neo4j-wrapper #7)
6
+ * get_or_create should return a wrapped node (neo4j-wrapper #8)
7
+ * Make it work with Neo4j 1.7.1 (neo4j-core, #19)
8
+
9
+ == 2.2.2 - skipped
10
+
1
11
  == 2.2.1 / 2012-12-18
2
12
  * Fix for JRuby 1.7.1 and Equal #225
3
13
  * Fix for create nodes and relationship using Cypher (neo4j-core #17)
@@ -24,79 +24,75 @@ lucene: { fulltext: { provider: lucene,
24
24
  type: exact}
25
25
  }
26
26
 
27
- # If migrations should be run in a new thread
28
- # If set to true it you can use the database while it is migrating.
29
- migration_thread: false
30
-
31
- # If online backup should be available, if it is the Online JAR file will be loaded,
32
- # Notice it must be either 'true' or 'false' as string
33
- enable_online_backup: 'false'
34
-
35
- #use the clustered Neo4j GraphDatabase (org.neo4j.kernel.HighlyAvailableGraphDatabase)
36
- ha.db: false
37
-
38
- # Example of HA Configuration, see http://wiki.neo4j.org/content/High_Availability_Cluster
39
- # This is only used when ha.db is set to true
40
- ha.server_id: 2
41
- ha.server: 'localhost:6002'
42
- ha.coordinators: 'localhost:2181,localhost:2182,localhost:2183'
43
-
44
- # if enabled you can use the bin/neo4j-shell command to access the database
45
- enable_remote_shell: "port=9332"
46
-
47
- #===Memory mapped I/O settings===
48
-
49
- #Each file in the Neo store can use memory mapped I/O for reading/writing.
50
- #Best performance is achived if the full file can be memory mapped but if
51
- #there isn't enough memory for that Neo will try and make the best use of
52
- #the memory it gets (regions of the file that get accessed often will more
53
- #likley be memory mapped).
54
-
55
- #For high traversal speed it is important to have the nodestore.db and
56
- #relationshipstore.db files.
57
-
58
- neostore.nodestore.db.mapped_memory: 25M
59
- neostore.relationshipstore.db.mapped_memory: 50M
60
- neostore.propertystore.db.mapped_memory: 90M
61
- neostore.propertystore.db.index.mapped_memory: 1M
62
- neostore.propertystore.db.index.keys.mapped_memory: 1M
63
- neostore.propertystore.db.strings.mapped_memory: 130M
64
- neostore.propertystore.db.arrays.mapped_memory: 130M
65
-
66
-
67
- #: ": ": "Cache settings: ": ": "
68
-
69
- #use adaptive caches YES|NO. Let Neo try make best use of available heap.
70
- use_adaptive_cache: YES
71
-
72
- #heap usage/max heap size ratio. Neo will increase caches while ratio
73
- #is less and decrease if greater. Default 0.77 seems to be a good over
74
- #all ratio of heap usage to avoid GC trashing. Larger heaps may allow for
75
- #a higher ratio while tiny heaps may need even less.
76
- adaptive_cache_heap_ratio: 0.77
77
-
78
- #how aggressive Neo will decrease caches once heap ratio reached
79
- adaptive_cache_manager_decrease_ratio: 1.15
80
-
81
- #how aggresive Neo will increase caches if ratio isn't yet reached
82
- adaptive_cache_manager_increase_ratio: 1.1
83
-
84
- #if no requests are made to Neo this is the amount of time in ms Neo will wait
85
- #before it checks the heap usage and adapts the caches if needed
86
- adaptive_cache_worker_sleep_time: 3000
87
-
88
- #minimum size (number of nodes) of node cache. If adaptive cache is in use
89
- #node cache will not be decreased under this value
90
- min_node_cache_size: 0
91
-
92
- #minimum size (number of relationships) of relationship cache. If adaptive
93
- #cache is in use relationship cache will not be decreased under this value
94
- min_relationship_cache_size: 0
95
-
96
- #maximum size (number of nodes) of node cache. If adaptive cache is not in
97
- #use the node cache will not be increased above this value
98
- max_node_cache_size: 1500
99
-
100
- #maximum size (number of relationship) of node cache. If adaptive cache is
101
- #not in use the relationship cache will not be increased above this value
102
- max_relationship_cache_size: 3500
27
+ ## If online backup should be available, if it is the Online JAR file will be loaded,
28
+ ## Notice it must be either 'true' or 'false' as string
29
+ #enable_online_backup: 'false'
30
+ #
31
+ ##use the clustered Neo4j GraphDatabase (org.neo4j.kernel.HighlyAvailableGraphDatabase)
32
+ #ha.db: false
33
+ #
34
+ ## Example of HA Configuration, see http://wiki.neo4j.org/content/High_Availability_Cluster
35
+ ## This is only used when ha.db is set to true
36
+ #ha.server_id: 2
37
+ #ha.server: 'localhost:6002'
38
+ #ha.coordinators: 'localhost:2181,localhost:2182,localhost:2183'
39
+ #
40
+ ## if enabled you can use the bin/neo4j-shell command to access the database
41
+ #enable_remote_shell: "port=9332"
42
+ #
43
+ ##===Memory mapped I/O settings===
44
+ #
45
+ ##Each file in the Neo store can use memory mapped I/O for reading/writing.
46
+ ##Best performance is achived if the full file can be memory mapped but if
47
+ ##there isn't enough memory for that Neo will try and make the best use of
48
+ ##the memory it gets (regions of the file that get accessed often will more
49
+ ##likley be memory mapped).
50
+ #
51
+ ##For high traversal speed it is important to have the nodestore.db and
52
+ ##relationshipstore.db files.
53
+ #
54
+ #neostore.nodestore.db.mapped_memory: 25M
55
+ #neostore.relationshipstore.db.mapped_memory: 50M
56
+ #neostore.propertystore.db.mapped_memory: 90M
57
+ #neostore.propertystore.db.index.mapped_memory: 1M
58
+ #neostore.propertystore.db.index.keys.mapped_memory: 1M
59
+ #neostore.propertystore.db.strings.mapped_memory: 130M
60
+ #neostore.propertystore.db.arrays.mapped_memory: 130M
61
+ #
62
+ #
63
+ ##: ": ": "Cache settings: ": ": "
64
+ #
65
+ ##use adaptive caches YES|NO. Let Neo try make best use of available heap.
66
+ #use_adaptive_cache: YES
67
+ #
68
+ ##heap usage/max heap size ratio. Neo will increase caches while ratio
69
+ ##is less and decrease if greater. Default 0.77 seems to be a good over
70
+ ##all ratio of heap usage to avoid GC trashing. Larger heaps may allow for
71
+ ##a higher ratio while tiny heaps may need even less.
72
+ #adaptive_cache_heap_ratio: 0.77
73
+ #
74
+ ##how aggressive Neo will decrease caches once heap ratio reached
75
+ #adaptive_cache_manager_decrease_ratio: 1.15
76
+ #
77
+ ##how aggresive Neo will increase caches if ratio isn't yet reached
78
+ #adaptive_cache_manager_increase_ratio: 1.1
79
+ #
80
+ ##if no requests are made to Neo this is the amount of time in ms Neo will wait
81
+ ##before it checks the heap usage and adapts the caches if needed
82
+ #adaptive_cache_worker_sleep_time: 3000
83
+ #
84
+ ##minimum size (number of nodes) of node cache. If adaptive cache is in use
85
+ ##node cache will not be decreased under this value
86
+ #min_node_cache_size: 0
87
+ #
88
+ ##minimum size (number of relationships) of relationship cache. If adaptive
89
+ ##cache is in use relationship cache will not be decreased under this value
90
+ #min_relationship_cache_size: 0
91
+ #
92
+ ##maximum size (number of nodes) of node cache. If adaptive cache is not in
93
+ ##use the node cache will not be increased above this value
94
+ #max_node_cache_size: 1500
95
+ #
96
+ ##maximum size (number of relationship) of node cache. If adaptive cache is
97
+ ##not in use the relationship cache will not be increased above this value
98
+ #max_relationship_cache_size: 3500
@@ -1,5 +1,3 @@
1
- require File.expand_path('../ha_console', __FILE__)
2
-
3
1
  module Neo4j
4
2
 
5
3
  module Rails
@@ -9,11 +7,18 @@ module Neo4j
9
7
  # Include this in your config/application.rb in order to run a rails console
10
8
  # It avoids the Neo4j limitation of only having one process accessing the database by using HA clustering/neo4j-enterprise
11
9
  class Railtie < Object::Rails::Railtie
10
+
12
11
  config.before_configuration do
13
- Neo4j::Rails::HaConsole.config_machine
14
- Neo4j::Rails::HaConsole.start_zookeeper
15
- config.neo4j.storage_path = Neo4j::Rails::HaConsole.storage_path
16
- puts "HA: #{Neo4j.config['ha.db']}, server_id: #{Neo4j.config['ha.server_id']}, master: #{Neo4j.ha_master?}, storage_path=#{config.neo4j.storage_path}"
12
+ server_id = ((defined? IRB) || (defined? Pry)) ? 2 : 1
13
+ config.neo4j['enable_ha'] = true
14
+ config.neo4j['ha.server_id'] = server_id
15
+ config.neo4j['ha.server'] = "localhost:600#{server_id}"
16
+ config.neo4j['ha.pull_interval'] = '500ms'
17
+ config.neo4j['ha.discovery.enabled'] = false
18
+ config.neo4j['ha.initial_hosts'] = [1,2,3].map{|id| "localhost:500#{id}"}.join(',')
19
+ config.neo4j['ha.cluster_server'] = "localhost:500#{server_id}"
20
+ config.neo4j.storage_path = File.expand_path("db/ha_neo_#{server_id}", Object::Rails.root)
21
+ puts "Config HA cluster, ha.server_id: #{config.neo4j['ha.server_id']}, db: #{config.neo4j.storage_path}"
17
22
  end
18
23
  end
19
24
  end
@@ -32,6 +32,7 @@ module Neo4j
32
32
  status, headers, body = @app.call(env)
33
33
  [status, headers, Body.new(body, enabled)]
34
34
  ensure
35
+ IdentityMap.clear
35
36
  Neo4j::Rails::Model.close_lucene_connections
36
37
  Neo4j.threadlocal_ref_node = Neo4j.default_ref_node
37
38
  end
@@ -41,11 +41,12 @@ module Neo4j
41
41
 
42
42
  # @see http://rdoc.info/github/andreasronge/neo4j-core/Neo4j/Core/Relationship#other_node-instance_method
43
43
  def other_node(node)
44
- if persisted?
45
- _java_rel._other_node(node._java_entity)
46
- else
47
- @_start_node == node ? @_end_node : @_start_node
48
- end
44
+ n = if persisted?
45
+ _java_rel._other_node(node._java_entity)
46
+ else
47
+ @_start_node == node ? @_end_node : @_start_node
48
+ end
49
+ n && n.wrapper
49
50
  end
50
51
 
51
52
  # Returns the start node which can be unpersisted
@@ -1,3 +1,3 @@
1
1
  module Neo4j
2
- VERSION = "2.2.1"
2
+ VERSION = "2.2.3"
3
3
  end
@@ -32,5 +32,5 @@ It comes included with the Apache Lucene document database.
32
32
  s.add_dependency('orm_adapter', ">= 0.0.3")
33
33
  s.add_dependency("activemodel", ">= 3.0.0", "< 3.3")
34
34
  s.add_dependency("railties", ">= 3.0.0", "< 3.3")
35
- s.add_dependency("neo4j-wrapper", '2.2.1')
35
+ s.add_dependency("neo4j-wrapper", '2.2.3')
36
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neo4j
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.2.3
5
5
  prerelease:
6
6
  platform: java
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-18 00:00:00.000000000 Z
12
+ date: 2012-12-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: orm_adapter
@@ -81,13 +81,13 @@ dependencies:
81
81
  requirements:
82
82
  - - '='
83
83
  - !ruby/object:Gem::Version
84
- version: 2.2.1
84
+ version: 2.2.3
85
85
  none: false
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - '='
89
89
  - !ruby/object:Gem::Version
90
- version: 2.2.1
90
+ version: 2.2.3
91
91
  none: false
92
92
  prerelease: false
93
93
  type: :runtime
@@ -149,7 +149,6 @@ files:
149
149
  - lib/neo4j/rails/column.rb
150
150
  - lib/neo4j/rails/compositions.rb
151
151
  - lib/neo4j/rails/finders.rb
152
- - lib/neo4j/rails/ha_console.rb
153
152
  - lib/neo4j/rails/has_n.rb
154
153
  - lib/neo4j/rails/identity.rb
155
154
  - lib/neo4j/rails/model.rb
@@ -167,13 +166,7 @@ files:
167
166
  - lib/neo4j/rails/transaction.rb
168
167
  - lib/neo4j/rails/tx_methods.rb
169
168
  - lib/neo4j/rails/validations.rb
170
- - lib/neo4j/rails/ha_console/ha_console.rb
171
169
  - lib/neo4j/rails/ha_console/railtie.rb
172
- - lib/neo4j/rails/ha_console/zookeeper/clean.sh
173
- - lib/neo4j/rails/ha_console/zookeeper/start_zookeeper.sh
174
- - lib/neo4j/rails/ha_console/zookeeper/zookeeper.rb
175
- - lib/neo4j/rails/ha_console/zookeeper/conf/server1.cfg
176
- - lib/neo4j/rails/ha_console/zookeeper/data/zookeeper1/myid
177
170
  - lib/neo4j/rails/relationships/node_dsl.rb
178
171
  - lib/neo4j/rails/relationships/relationships.rb
179
172
  - lib/neo4j/rails/relationships/rels_dsl.rb
File without changes
@@ -1,68 +0,0 @@
1
- require 'neo4j-enterprise'
2
- require 'fileutils'
3
- require 'tmpdir'
4
-
5
- module Neo4j
6
-
7
- module Rails
8
-
9
- # Configures Neo4j HA and Zookeeper in order to be used from a rails console
10
- # @see Railtie
11
- module HaConsole
12
- class << self
13
- def machine_id
14
- (defined? IRB) ? 2 : 1
15
- end
16
-
17
- def proj_root
18
- Object::Rails.root
19
- end
20
-
21
- def storage_path(id = machine_id)
22
- File.expand_path("db/ha_neo_#{id}", proj_root)
23
- end
24
-
25
- def config_machine(id = machine_id)
26
- puts "config_machine #{id}"
27
- # override this default config with this machine configuration
28
- Neo4j.config['ha.db'] = true
29
- Neo4j.config['ha.server_id'] = id
30
- Neo4j.config['ha.server'] = "localhost:600#{machine_id}"
31
- Neo4j.config['ha.pull_interval'] = "2"
32
- Neo4j.config[:storage_path] = storage_path(id)
33
-
34
- copy_config unless File.exist?(config_dir)
35
- require "#{config_dir}/zookeeper"
36
- end
37
-
38
- def config_dir
39
- File.expand_path("neo4j_ha_console/zookeeper", Dir.tmpdir)
40
- end
41
-
42
- def copy_config
43
- source_dir = File.expand_path("zookeeper", File.dirname(__FILE__))
44
- system("mkdir -p #{File.expand_path("..", config_dir)}")
45
- system("cp -r #{source_dir} #{config_dir}")
46
- end
47
-
48
- def zookeeper_running?
49
- Zookeeper.pid_file?
50
- end
51
-
52
- def start_zookeeper
53
- Zookeeper.start unless zookeeper_running?
54
- end
55
-
56
- def shutdown_zookeeper
57
- if zookeeper_running?
58
- Zookeeper.shutdown
59
- else
60
- puts "Can't shutdown zookeeper - no PID file found for zookeeper process at #{Zookeeper.pid_file}"
61
- end
62
- end
63
-
64
- end
65
- end
66
- end
67
- end
68
-
@@ -1,4 +0,0 @@
1
- #!/bin/sh
2
-
3
- rm -rf db
4
- rm -rf data/zookeeper1/version-2
@@ -1,11 +0,0 @@
1
- #server1.cfg
2
- tickTime=2000
3
- initLimit=10
4
- syncLimit=5
5
-
6
- dataDir=data/zookeeper1
7
- clientPort=2181
8
-
9
- server.1=localhost:2888:3888
10
- #server.2=localhost:2889:3889
11
- #server.3=localhost:2890:3890
@@ -1,17 +0,0 @@
1
- #!/bin/sh
2
-
3
- # Only follow symlinks if readlink supports it
4
- if readlink -f "$0" > /dev/null 2>&1
5
- then
6
- ZOOBIN=`readlink -f "$0"`
7
- else
8
- ZOOBIN="$0"
9
- fi
10
-
11
- ZOOMAIN="org.apache.zookeeper.server.quorum.QuorumPeerMain"
12
-
13
- ZOOBINDIR=`dirname "$ZOOBIN"`
14
- JARDIR=`cd "${ZOOBINDIR}/lib"; pwd`
15
-
16
- CLASSPATH=$JARDIR/log4j-1.2.16.jar:$JARDIR/zookeeper-3.3.2.jar
17
- java -cp "$CLASSPATH" $ZOOMAIN conf/server1.cfg
@@ -1,62 +0,0 @@
1
- module Neo4j
2
- module Rails
3
- module HaConsole
4
- module Zookeeper
5
- class << self
6
- def shutdown
7
- return unless pid_file?
8
- file = File.open(pid_file, "rb")
9
- pid = file.read.to_s.chomp
10
- IO.popen("pkill -TERM -P #{pid}")
11
- puts "Zookeeper: shutdown #{pid}"
12
- system("rm -f #{pid_file}")
13
- end
14
-
15
- def clean
16
- dir = File.expand_path("data/zookeeper1/version-2", File.dirname(__FILE__))
17
- puts "Zookeeper: clean #{dir}"
18
- system("rm -rf #{dir}")
19
- end
20
-
21
- def pid_file
22
- File.expand_path("zookeeper.pid", File.dirname(__FILE__)).to_s
23
- end
24
-
25
- def pid_file?
26
- x = File.exist?(pid_file)
27
- puts "Zookeeper: pid file #{x} at #{pid_file}"
28
- x
29
- end
30
-
31
- def lib_dir
32
- File.expand_path("lib", File.dirname(__FILE__))
33
- end
34
-
35
- def copy_jars
36
- puts "Zookeeper: Copy JARs"
37
- files = $CLASSPATH.find_all{|x| x =~ /\.jar$/}.collect{|y| y.sub('file:', '')}
38
- zookeeper = files.find{|f| f =~ /\/zookeeper/}
39
- raise "zookeper JAR not found in a GEM, did you forget to include neo4j-enterprise in your Gemfile (development)" unless zookeeper
40
-
41
- log4j = files.find{|f| f =~ /\/log4j/}
42
- raise "log4j not found in a GEM, did you forget to include neo4j-enterprise in your Gemfile (development)" unless log4j
43
-
44
-
45
- system("mkdir -p #{lib_dir}")
46
- FileUtils.cp(zookeeper, lib_dir)
47
- FileUtils.cp(log4j, lib_dir)
48
- end
49
-
50
- def start
51
- puts "Zookeeper: start, check jars?"
52
- copy_jars unless File.exist?(lib_dir)
53
- zookeeper_exec = File.expand_path("start_zookeeper.sh", File.dirname(__FILE__)).to_s
54
- Dir.chdir(File.dirname(__FILE__))
55
- pipe = IO.popen(zookeeper_exec)
56
- File.open(pid_file, 'w') { |f| f.write(pipe.pid) }
57
- end
58
- end
59
- end
60
- end
61
- end
62
- end