Update of /cvsroot/nutch/nutch/src/java/net/nutch/fs
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9735/java/net/nutch/fs

Modified Files:
        FSNamesystem.java NDFS.java TestClient.java 
Log Message:

  NDFS datanode size is now configurable, defaults to 100Gb.

  Fix problem with NDFS when a client dies, but its lease does
not expire correctly.  Lease queue was not managed correctly.



Index: TestClient.java
===================================================================
RCS file: /cvsroot/nutch/nutch/src/java/net/nutch/fs/TestClient.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TestClient.java     20 Aug 2004 20:36:11 -0000      1.3
--- TestClient.java     29 Nov 2004 05:50:33 -0000      1.4
***************
*** 193,221 ****
          int i = 0;
          NutchFileSystem nfs = NutchFileSystem.parseArgs(argv, i);
!         TestClient tc = new TestClient(nfs);
  
!         String cmd = argv[i++];
!         if ("-put".equals(cmd)) {
!             tc.put(new File(argv[i++]), argv[i++]);
!         } else if ("-get".equals(cmd)) {
!             tc.get(argv[i++], new File(argv[i++]));
!         } else if ("-ls".equals(cmd)) {
!             tc.ls(argv[i++]);
!         } else if ("-mv".equals(cmd)) {
!             tc.rename(argv[i++], argv[i++]);
!         } else if ("-cp".equals(cmd)) {
!             tc.copy(argv[i++], argv[i++]);
!         } else if ("-rm".equals(cmd)) {
!             tc.delete(argv[i++]);
!         } else if ("-ls".equals(cmd)) {
!             tc.ls(argv[i++]);
!         } else if ("-du".equals(cmd)) {
!             tc.du(argv[i++]);
!         } else if ("-mkdir".equals(cmd)) {
!             tc.mkdir(argv[i++]);
!         } else if ("-report".equals(cmd)) {
!             tc.report();
          }
-         System.exit(0);
      }
  }
--- 193,225 ----
          int i = 0;
          NutchFileSystem nfs = NutchFileSystem.parseArgs(argv, i);
!         try {
!             TestClient tc = new TestClient(nfs);
  
!             String cmd = argv[i++];
!             if ("-put".equals(cmd)) {
!                 tc.put(new File(argv[i++]), argv[i++]);
!             } else if ("-get".equals(cmd)) {
!                 tc.get(argv[i++], new File(argv[i++]));
!             } else if ("-ls".equals(cmd)) {
!                 tc.ls(argv[i++]);
!             } else if ("-mv".equals(cmd)) {
!                 tc.rename(argv[i++], argv[i++]);
!             } else if ("-cp".equals(cmd)) {
!                 tc.copy(argv[i++], argv[i++]);
!             } else if ("-rm".equals(cmd)) {
!                 tc.delete(argv[i++]);
!             } else if ("-ls".equals(cmd)) {
!                 tc.ls(argv[i++]);
!             } else if ("-du".equals(cmd)) {
!                 tc.du(argv[i++]);
!             } else if ("-mkdir".equals(cmd)) {
!                 tc.mkdir(argv[i++]);
!             } else if ("-report".equals(cmd)) {
!                 tc.report();
!             }
!             System.exit(0);
!         } finally {
!             nfs.close();
          }
      }
  }

Index: NDFS.java
===================================================================
RCS file: /cvsroot/nutch/nutch/src/java/net/nutch/fs/NDFS.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** NDFS.java   20 Aug 2004 22:42:11 -0000      1.5
--- NDFS.java   29 Nov 2004 05:50:33 -0000      1.6
***************
*** 20,23 ****
--- 20,24 ----
      public static final Logger LOG = 
LogFormatter.getLogger("net.nutch.fs.NDFS");
      private static final long GIGABYTE = 1024 * 1024 * 1024;
+     private static long numGigs = NutchConf.getLong("ndfs.datanode.maxgigs", 
100);
  
      //
***************
*** 381,386 ****
          public DataNode(String machineName, File dir, InetSocketAddress 
nameNodeAddr) throws IOException {
              super(FSResults.class);
!             // REMIND - mjc - load from config file
!             long capacity = 60 * GIGABYTE;
              this.data = new FSDataset(dir, capacity);
              this.nameNodeAddr = nameNodeAddr;
--- 382,386 ----
          public DataNode(String machineName, File dir, InetSocketAddress 
nameNodeAddr) throws IOException {
              super(FSResults.class);
!             long capacity = numGigs * GIGABYTE;
              this.data = new FSDataset(dir, capacity);
              this.nameNodeAddr = nameNodeAddr;

Index: FSNamesystem.java
===================================================================
RCS file: /cvsroot/nutch/nutch/src/java/net/nutch/fs/FSNamesystem.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** FSNamesystem.java   1 Sep 2004 17:58:21 -0000       1.5
--- FSNamesystem.java   29 Nov 2004 05:50:33 -0000      1.6
***************
*** 105,123 ****
      //
      TreeMap leases = new TreeMap();
!     TreeSet sortedLeases = new TreeSet(new Comparator() {
!         public int compare(Object o1, Object o2) {
!             Lease l1 = (Lease) o1;
!             Lease l2 = (Lease) o2;
!             long lu1 = l1.lastUpdate;
!             long lu2 = l2.lastUpdate;
!             if (lu1 < lu2) {
!                 return -1;
!             } else if (lu1 > lu2) {
!                 return 1;
!             } else {
!                 return l1.holder.compareTo(l2.holder);
!             }
!         }
!     });
  
      //
--- 105,109 ----
      //
      TreeMap leases = new TreeMap();
!     TreeSet sortedLeases = new TreeSet();
  
      //
***************
*** 231,235 ****
--- 217,223 ----
                          sortedLeases.add(lease);
                      } else {
+                         sortedLeases.remove(lease);
                          lease.renew();
+                         sortedLeases.add(lease);
                      }
                      lease.startedCreate(src);
***************
*** 490,494 ****
       * expire, all the corresponding locks can be released.
       *************************************************************/
!     class Lease {
          public UTF8 holder;
          public long lastUpdate;
--- 478,482 ----
       * expire, all the corresponding locks can be released.
       *************************************************************/
!     class Lease implements Comparable {
          public UTF8 holder;
          public long lastUpdate;
***************
*** 497,500 ****
--- 485,489 ----
  
          public Lease(UTF8 holder) {
+             LOG.info("New lease, holder " + holder);
              this.holder = holder;
              renew();
***************
*** 534,537 ****
--- 523,548 ----
              creates.clear();
          }
+ 
+         /**
+          */
+         public String toString() {
+             return "[Lease.  Holder: " + holder.toString() + ", heldlocks: " 
+ locks.size() + ", pendingcreates: " + creates.size() + "]";
+         }
+ 
+         /**
+          */
+         public int compareTo(Object o) {
+             Lease l1 = (Lease) this;
+             Lease l2 = (Lease) o;
+             long lu1 = l1.lastUpdate;
+             long lu2 = l2.lastUpdate;
+             if (lu1 < lu2) {
+                 return -1;
+             } else if (lu1 > lu2) {
+                 return 1;
+             } else {
+                 return l1.holder.compareTo(l2.holder);
+             }
+         }
      }
      /******************************************************
***************
*** 550,554 ****
                                  top.releaseLocks();
                                  leases.remove(top.holder);
!                                 sortedLeases.remove(top);
                              } else {
                                  break;
--- 561,568 ----
                                  top.releaseLocks();
                                  leases.remove(top.holder);
!                                 LOG.info("Removing lease " + top + ", leases 
remaining: " + sortedLeases.size());
!                                 if (!sortedLeases.remove(top)) {
!                                     LOG.info("Unknown failure trying to 
remove " + top + " from lease set.");
!                                 }
                              } else {
                                  break;
***************
*** 578,582 ****
--- 592,598 ----
                      sortedLeases.add(lease);
                  } else {
+                     sortedLeases.remove(lease);
                      lease.renew();
+                     sortedLeases.add(lease);
                  }
                  lease.obtained(src);
***************
*** 605,612 ****
          return result;
      }
!     private synchronized int internalReleaseLock(UTF8 src, UTF8 holder) {
          return dir.releaseLock(src, holder);
      }
!     private synchronized void internalReleaseCreates(TreeSet creates) {
          for (Iterator it = creates.iterator(); it.hasNext(); ) {
              UTF8 src = (UTF8) it.next();
--- 621,628 ----
          return result;
      }
!     private int internalReleaseLock(UTF8 src, UTF8 holder) {
          return dir.releaseLock(src, holder);
      }
!     private void internalReleaseCreates(TreeSet creates) {
          for (Iterator it = creates.iterator(); it.hasNext(); ) {
              UTF8 src = (UTF8) it.next();
***************
*** 629,632 ****
--- 645,649 ----
                  lease.renew();
                  sortedLeases.add(lease);
+                 LOG.info("Renewed lease " + lease);
              }
          }



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/
_______________________________________________
Nutch-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nutch-cvs

Reply via email to