- 24 Feb, 2012 1 commit
-
-
Julien Muchembled authored
Replication is also fully reimplemented: - It is not done anymore on whole partitions. - It runs at lowest priority not to degrades performance for client nodes. Schema of MySQL table is changed to optimize storage layout: rows are now grouped by age, for good partial replication performance. This certainly also speeds up simple loads/stores.
-
- 21 Feb, 2012 1 commit
-
-
Julien Muchembled authored
-
- 11 Oct, 2011 2 commits
-
-
Julien Muchembled authored
- Change protocol to use SHA1 for all checksums: - Use SHA1 instead of CRC32 for data checksums. - Use SHA1 instead of MD5 for replication. - Change DatabaseManager API so that backends can store raw data separately from object metadata: - When processing AskStoreObject, call the backend to store the data immediately, instead of keeping it in RAM or in the temporary object table. Data is then referenced only by its checksum. Without such change, the storage could fail to store the transaction due to lack of RAM, or it could make tpc_finish step very slow. - Backends have to store data in a separate space, and remove entries as soon as they get unreferenced. So they must have an index of checksums in object metadata space. A new '_uncommitted_data' backend attribute keeps references of uncommitted data. - New methods: _pruneData, _storeData, storeData, unlockData - MySQL: change vertical partitioning of 'obj' by having data in a separate 'data' table instead of using a shortened 'obj_short' table. - BTree: data is moved from '_obj' to a new '_data' btree. - Undo is optimized so that backpointers are not required anymore to fetch data: - The checksum of an object is None only when creation is undone. - Removed DatabaseManager methods: _getObjectData, _getDataTIDFromData - DatabaseManager: move some code from _getDataTID to findUndoTID so that _getDataTID only has what's specific to backend. - Removed because already covered by ZODB tests: - neo.tests.storage.testStorageDBTests.StorageDBTests.test__getDataTID - neo.tests.storage.testStorageDBTests.StorageDBTests.test__getDataTIDFromData
-
Julien Muchembled authored
This changes how NEO stores undo information and how it is transmitted on the network.
-
- 05 Sep, 2011 1 commit
-
-
Julien Muchembled authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@2823 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 27 Apr, 2011 2 commits
-
-
Julien Muchembled authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@2735 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
Julien Muchembled authored
Main reason is that it's difficult to know in advance which side really closes the connection. Network events can be chaotic and this could lead to many race conditions. Thus, handler can be used to update any database that is somewhat redundant to the connection status, i.e. node status usually. Safely and less duplicated code. This change is motivated by recurrent random failures during election. An example of race condition was that 2 fully connected master could close the extra connection (the primary -> secondary one) at the same time. In order to stabilize lower-level code and start with reliable election process, code has also been simplified to not care about node states. All connections without exception are closed at the end of the election and states are then updated 1 by 1 by identification handler. Note that during election, there may be 2 connection per node, which makes difficult to update node states by connectionFailed/connectionClosed events. timeoutExpired & peerBroken are dropped as they are unused for the moment. A new API should be designed so that connectionClosed know the reason of the close. BROKEN state becomes unused. git-svn-id: https://svn.erp5.org/repos/neo/trunk@2732 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 17 Jan, 2011 1 commit
-
-
Olivier Cros authored
In order to prepare the eggification of the different neo parts, we created a new neo/lib module, containing all of the main neo's functions. It allows to make neo a virtual namespace, and so not containing module code anymore. git-svn-id: https://svn.erp5.org/repos/neo/trunk@2615 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 06 Jan, 2011 1 commit
-
-
Vincent Pelletier authored
Also reverts r2533: even if it's true that TIDs have no meaning at that level, they are a handy way to prioritise a transaction over another, to break lock cycles (aka deadlocks). This is the "detection" part of the change. When a storage reports a deadlock, client must store all already-stored objects again with "unlock" flag set. Upon receiving those store requests, storage must release locks held by transaction on those objects, and requeue the store request. If client didn't hold any lock (initial store was still in queue), drop the second store request. This doesn't solve possible deadlocks if ZODB-level sends us objects in a different order (ex: client 1 sending [OID1, OID2] & client 2 sending [OID2, OID1]). There is one important change to r2533's revert, which queues older transactions and notifies deadlock for younger ones. The original code did it the other way around, and it looks unfair to old transactions (they will keep being delayed by younger ones, and will just get older and older). git-svn-id: https://svn.erp5.org/repos/neo/trunk@2596 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 29 Oct, 2010 1 commit
-
-
Vincent Pelletier authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@2371 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 28 Aug, 2010 1 commit
-
-
Vincent Pelletier authored
There are 2 possibilities when an object is not found: - the object doesn't exist at all - the object exists, but nothing matches serial criterion git-svn-id: https://svn.erp5.org/repos/neo/trunk@2256 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 24 Aug, 2010 1 commit
-
-
Vincent Pelletier authored
It is more efficient to provide a boundary value than a row count range. This fixes replication on partitions with a large number of objects, revisions or transactions: query time is now constant where it used to increase, causing timeout problems when query duration exceeded ping time + ping timeout (11s currently). git-svn-id: https://svn.erp5.org/repos/neo/trunk@2221 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 21 Jun, 2010 1 commit
-
-
Grégory Wisniewski authored
- The storages no more check the last OID during a store - The storages inconditionnaly store the last OID notified by the master - The master check during the if a greater oid was used by a client - The master always notify the last OID when a pool is generated or if the check above is True - The master's transaction manager manager the last oid and oid generator git-svn-id: https://svn.erp5.org/repos/neo/trunk@2180 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 15 May, 2010 1 commit
-
-
Grégory Wisniewski authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@2112 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 26 Mar, 2010 1 commit
-
-
Vincent Pelletier authored
This mimics what FileStorage uses (file offsets) but in a relational manner. This offloads decision of the ability to undo a transaction to storages, avoiding 3 data loads for each object in the transaction at client side. This also makes Neo refuse to undo transactions where object data would happen to be equal between current value and undone value. Finally, this is required to make database pack work properly (namely, it prevents loosing objects which are orphans at pack TID, but are reachable after it thanks to a transactional undo). Also, extend storage's transaction manager so database adapter can fetch data already sent by client in the same transaction, so it can undo multiple transactions at once. Requires making object lock re-entrant (done in this commit). git-svn-id: https://svn.erp5.org/repos/neo/trunk@1978 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 25 Feb, 2010 1 commit
-
-
Vincent Pelletier authored
This fixes undo support in client without changing the way replication is implemented. git-svn-id: https://svn.erp5.org/repos/neo/trunk@1860 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 23 Feb, 2010 1 commit
-
-
Vincent Pelletier authored
This does not add pack support, but merely prepares a place on transaction description to tell whether it has been packed, along with corresponding transport (packed definition, handlers, etc). git-svn-id: https://svn.erp5.org/repos/neo/trunk@1833 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 19 Feb, 2010 1 commit
-
-
Grégory Wisniewski authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@1790 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 16 Feb, 2010 1 commit
-
-
Grégory Wisniewski authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@1762 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 12 Feb, 2010 1 commit
-
-
Grégory Wisniewski authored
Remove the related TODO. git-svn-id: https://svn.erp5.org/repos/neo/trunk@1737 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 05 Feb, 2010 1 commit
-
-
Grégory Wisniewski authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@1647 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 03 Feb, 2010 1 commit
-
-
Vincent Pelletier authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@1606 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 02 Feb, 2010 1 commit
-
-
Grégory Wisniewski authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@1595 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 01 Feb, 2010 2 commits
-
-
Grégory Wisniewski authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@1576 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
Grégory Wisniewski authored
Almost any use of packet was to retreive the msg_id of the request and pass it to answer(). In storage's replicator, critical TIDs are indexed with UUID instead of remote connection ID (full replicator review required). In admin node, expected answers are still queued with the msg_id but it seems useless as no concurrent queries should happen. git-svn-id: https://svn.erp5.org/repos/neo/trunk@1569 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 28 Jan, 2010 1 commit
-
-
Grégory Wisniewski authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@1533 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 13 Jan, 2010 1 commit
-
-
Grégory Wisniewski authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@1420 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 02 Nov, 2009 1 commit
-
-
Grégory Wisniewski authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@1365 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 07 Oct, 2009 1 commit
-
-
Grégory Wisniewski authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@1362 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 05 Oct, 2009 1 commit
-
-
Grégory Wisniewski authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@1358 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 01 Oct, 2009 3 commits
-
-
Grégory Wisniewski authored
prefix from everywhere. git-svn-id: https://svn.erp5.org/repos/neo/trunk@1350 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
Grégory Wisniewski authored
git-svn-id: https://svn.erp5.org/repos/neo/trunk@1338 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
Grégory Wisniewski authored
to avoid full module. git-svn-id: https://svn.erp5.org/repos/neo/trunk@1334 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 30 Sep, 2009 1 commit
-
-
Grégory Wisniewski authored
Remove all (now useless) imports from protocol module. git-svn-id: https://svn.erp5.org/repos/neo/trunk@1327 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 29 Sep, 2009 1 commit
-
-
Grégory Wisniewski authored
through those methods and node registration is automatic. There is no more need to import Node classes directly, so remove all related imports. git-svn-id: https://svn.erp5.org/repos/neo/trunk@1312 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 10 Aug, 2009 1 commit
-
-
Grégory Wisniewski authored
git-svn-id: https://svn.erp5.org/repos/neo/branches/prototype3@1261 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 03 Aug, 2009 1 commit
-
-
Grégory Wisniewski authored
list to think about a global rename of handler's methods. git-svn-id: https://svn.erp5.org/repos/neo/branches/prototype3@1148 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 31 Jul, 2009 1 commit
-
-
Grégory Wisniewski authored
- split big packets - gather multiple objects in one sql requests - sql injection - no more use notification packet to change a node state - reduce duplicates git-svn-id: https://svn.erp5.org/repos/neo/branches/prototype3@1122 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
- 29 Jul, 2009 2 commits
-
-
Grégory Wisniewski authored
called from the generic handler. This allow use it in some part of client and storage handlers. Add some XXX... git-svn-id: https://svn.erp5.org/repos/neo/branches/prototype3@1091 71dcc9de-d417-0410-9af5-da40c76e7ee4
-
Grégory Wisniewski authored
call because the implementation do nothing. This is used only in ClientEventHandler and so, no overloading is required. git-svn-id: https://svn.erp5.org/repos/neo/branches/prototype3@1089 71dcc9de-d417-0410-9af5-da40c76e7ee4
-