Update of /var/cvs/src/org/mmbase/core/util
In directory james.mmbase.org:/tmp/cvs-serv9425
Modified Files:
StorageConnector.java
Log Message:
sometime encountered the warning 'Found a node which is NULL'. This indicates
an inconsistency in the db. But it is hard to deduce which one without further
information. Detecting it earlier now, when such information is handy, and can
be logged.
See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/core/util
Index: StorageConnector.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/core/util/StorageConnector.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- StorageConnector.java 3 Sep 2008 21:56:46 -0000 1.21
+++ StorageConnector.java 6 Nov 2008 17:00:27 -0000 1.22
@@ -31,7 +31,7 @@
*
* @since MMBase-1.8
* @author Pierre van Rooden
- * @version $Id: StorageConnector.java,v 1.21 2008/09/03 21:56:46 michiel Exp $
+ * @version $Id: StorageConnector.java,v 1.22 2008/11/06 17:00:27 michiel Exp $
*/
public class StorageConnector {
@@ -306,7 +306,7 @@
* @return List containing real nodes, directly from this Builders
*/
public List<MMObjectNode> getNodes(Collection<MMObjectNode> virtuals)
throws SearchQueryException {
- List<MMObjectNode> result = new ArrayList<MMObjectNode>();
+ final List<MMObjectNode> result = new ArrayList<MMObjectNode>();
int numbersSize = 0;
NodeSearchQuery query = new NodeSearchQuery(builder);
@@ -318,7 +318,11 @@
// check if this node is already in cache
Integer number = node.getNumber();
if(builder.isNodeCached(number)) {
- result.add(builder.getNodeFromCache(number));
+ MMObjectNode n = builder.getNodeFromCache(number);
+ if (n == null) {
+ log.warn("No such node '" + number + "', adding NULL.
Found in virtual node " + node);
+ }
+ result.add(n);
// else seek it with a search on builder in db
} else {
numbersSize += ("," + number).length();
@@ -354,15 +358,20 @@
* @since MMBase-1.8.2
*/
protected void addSubResult(final NodeSearchQuery query, final
List<Integer> subResult, final List<MMObjectNode> result) throws
SearchQueryException {
- List<MMObjectNode> rawNodes = getRawNodes(query, true);
+ final List<MMObjectNode> rawNodes = getRawNodes(query, true);
// convert this list to a map, for easy reference when filling result.
// would the creation of this Map not somehow be avoidable?
- Map<Integer, MMObjectNode> rawMap = new HashMap<Integer,
MMObjectNode>();
+ final Map<Integer, MMObjectNode> rawMap = new HashMap<Integer,
MMObjectNode>();
+
for (MMObjectNode n : rawNodes) {
rawMap.put(n.getNumber(), n);
}
for (Integer n : subResult) {
- result.add(rawMap.get(n));
+ MMObjectNode node = rawMap.get(n);
+ if (node == null) {
+ log.warn("No node " + n + " found in " + rawNodes + " (for " +
MMBase.getMMBase().getSearchQueryHandler().createSqlString(query) + ") will
use NULL");
+ }
+ result.add(node);
}
}
@@ -660,7 +669,7 @@
try {
for (MMObjectNode current :
conversionBuilder.getStorageConnector().getNodes(nodes)) {
if (current == null) {
- log.warn("Found a node which is NULL!");
+ log.service("Found a node which is NULL !");
continue;
}
convertedNodes.put(current.getNumber(), current);
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs