accumulo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ktur...@apache.org
Subject [4/4] git commit: ACCUMULO-1611 added conditional mutations to proxy
Date Wed, 11 Sep 2013 19:15:44 GMT
ACCUMULO-1611 added conditional mutations to proxy


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/176df80f
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/176df80f
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/176df80f

Branch: refs/heads/master
Commit: 176df80fd404e7ba68bceedbb1ab2b3a53862857
Parents: 3141177
Author: Keith Turner <kturner@apache.org>
Authored: Wed Sep 11 15:14:24 2013 -0400
Committer: Keith Turner <kturner@apache.org>
Committed: Wed Sep 11 15:14:24 2013 -0400

----------------------------------------------------------------------
 .../core/client/impl/thrift/ClientService.java  |   28 +-
 .../core/client/impl/thrift/TDiskUsage.java     |    4 +-
 .../core/data/thrift/MultiScanResult.java       |   12 +-
 .../accumulo/core/data/thrift/ScanResult.java   |    4 +-
 .../accumulo/core/data/thrift/TMutation.java    |    4 +-
 .../accumulo/core/data/thrift/UpdateErrors.java |    4 +-
 .../core/master/thrift/MasterClientService.java |    4 +-
 .../core/master/thrift/MasterMonitorInfo.java   |   12 +-
 .../core/master/thrift/TabletServerStatus.java  |    4 +-
 .../core/master/thrift/TabletSplit.java         |    4 +-
 .../tabletserver/thrift/ActiveCompaction.java   |    8 +-
 .../core/tabletserver/thrift/ActiveScan.java    |   12 +-
 .../thrift/ConstraintViolationException.java    |    4 +-
 .../tabletserver/thrift/IteratorConfig.java     |    4 +-
 .../org/apache/accumulo/proxy/ProxyServer.java  |  197 +-
 .../accumulo/proxy/thrift/AccumuloProxy.java    | 6139 ++++++++++++++++--
 .../accumulo/proxy/thrift/ActiveCompaction.java |   68 +-
 .../accumulo/proxy/thrift/ActiveScan.java       |  104 +-
 .../accumulo/proxy/thrift/BatchScanOptions.java |   16 +-
 .../apache/accumulo/proxy/thrift/Condition.java |  776 +++
 .../proxy/thrift/ConditionalStatus.java         |   70 +
 .../proxy/thrift/ConditionalUpdates.java        |  610 ++
 .../proxy/thrift/ConditionalWriterOptions.java  |  743 +++
 .../apache/accumulo/proxy/thrift/DiskUsage.java |    4 +-
 .../accumulo/proxy/thrift/ScanOptions.java      |   12 +-
 .../accumulo/proxy/thrift/ScanResult.java       |    4 +-
 proxy/src/main/thrift/proxy.thrift              |   38 +
 .../org/apache/accumulo/proxy/SimpleTest.java   |  331 +
 28 files changed, 8378 insertions(+), 842 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ClientService.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ClientService.java
b/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ClientService.java
index d87dba8..488e065 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ClientService.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ClientService.java
@@ -5082,7 +5082,7 @@ import org.slf4j.LoggerFactory;
                   struct.files = new ArrayList<String>(_list8.size);
                   for (int _i9 = 0; _i9 < _list8.size; ++_i9)
                   {
-                    String _elem10; // optional
+                    String _elem10; // required
                     _elem10 = iprot.readString();
                     struct.files.add(_elem10);
                   }
@@ -5259,7 +5259,7 @@ import org.slf4j.LoggerFactory;
             struct.files = new ArrayList<String>(_list13.size);
             for (int _i14 = 0; _i14 < _list13.size; ++_i14)
             {
-              String _elem15; // optional
+              String _elem15; // required
               _elem15 = iprot.readString();
               struct.files.add(_elem15);
             }
@@ -5746,7 +5746,7 @@ import org.slf4j.LoggerFactory;
                   struct.success = new ArrayList<String>(_list16.size);
                   for (int _i17 = 0; _i17 < _list16.size; ++_i17)
                   {
-                    String _elem18; // optional
+                    String _elem18; // required
                     _elem18 = iprot.readString();
                     struct.success.add(_elem18);
                   }
@@ -5867,7 +5867,7 @@ import org.slf4j.LoggerFactory;
             struct.success = new ArrayList<String>(_list21.size);
             for (int _i22 = 0; _i22 < _list21.size; ++_i22)
             {
-              String _elem23; // optional
+              String _elem23; // required
               _elem23 = iprot.readString();
               struct.success.add(_elem23);
             }
@@ -7808,7 +7808,7 @@ import org.slf4j.LoggerFactory;
                   struct.tables = new HashSet<String>(2*_set24.size);
                   for (int _i25 = 0; _i25 < _set24.size; ++_i25)
                   {
-                    String _elem26; // optional
+                    String _elem26; // required
                     _elem26 = iprot.readString();
                     struct.tables.add(_elem26);
                   }
@@ -7909,7 +7909,7 @@ import org.slf4j.LoggerFactory;
             struct.tables = new HashSet<String>(2*_set29.size);
             for (int _i30 = 0; _i30 < _set29.size; ++_i30)
             {
-              String _elem31; // optional
+              String _elem31; // required
               _elem31 = iprot.readString();
               struct.tables.add(_elem31);
             }
@@ -8393,7 +8393,7 @@ import org.slf4j.LoggerFactory;
                   struct.success = new ArrayList<TDiskUsage>(_list32.size);
                   for (int _i33 = 0; _i33 < _list32.size; ++_i33)
                   {
-                    TDiskUsage _elem34; // optional
+                    TDiskUsage _elem34; // required
                     _elem34 = new TDiskUsage();
                     _elem34.read(iprot);
                     struct.success.add(_elem34);
@@ -8515,7 +8515,7 @@ import org.slf4j.LoggerFactory;
             struct.success = new ArrayList<TDiskUsage>(_list37.size);
             for (int _i38 = 0; _i38 < _list37.size; ++_i38)
             {
-              TDiskUsage _elem39; // optional
+              TDiskUsage _elem39; // required
               _elem39 = new TDiskUsage();
               _elem39.read(iprot);
               struct.success.add(_elem39);
@@ -9392,7 +9392,7 @@ import org.slf4j.LoggerFactory;
                   struct.success = new HashSet<String>(2*_set40.size);
                   for (int _i41 = 0; _i41 < _set40.size; ++_i41)
                   {
-                    String _elem42; // optional
+                    String _elem42; // required
                     _elem42 = iprot.readString();
                     struct.success.add(_elem42);
                   }
@@ -9493,7 +9493,7 @@ import org.slf4j.LoggerFactory;
             struct.success = new HashSet<String>(2*_set45.size);
             for (int _i46 = 0; _i46 < _set45.size; ++_i46)
             {
-              String _elem47; // optional
+              String _elem47; // required
               _elem47 = iprot.readString();
               struct.success.add(_elem47);
             }
@@ -15015,7 +15015,7 @@ import org.slf4j.LoggerFactory;
                   struct.authorizations = new ArrayList<ByteBuffer>(_list48.size);
                   for (int _i49 = 0; _i49 < _list48.size; ++_i49)
                   {
-                    ByteBuffer _elem50; // optional
+                    ByteBuffer _elem50; // required
                     _elem50 = iprot.readBinary();
                     struct.authorizations.add(_elem50);
                   }
@@ -15143,7 +15143,7 @@ import org.slf4j.LoggerFactory;
             struct.authorizations = new ArrayList<ByteBuffer>(_list53.size);
             for (int _i54 = 0; _i54 < _list53.size; ++_i54)
             {
-              ByteBuffer _elem55; // optional
+              ByteBuffer _elem55; // required
               _elem55 = iprot.readBinary();
               struct.authorizations.add(_elem55);
             }
@@ -16467,7 +16467,7 @@ import org.slf4j.LoggerFactory;
                   struct.success = new ArrayList<ByteBuffer>(_list56.size);
                   for (int _i57 = 0; _i57 < _list56.size; ++_i57)
                   {
-                    ByteBuffer _elem58; // optional
+                    ByteBuffer _elem58; // required
                     _elem58 = iprot.readBinary();
                     struct.success.add(_elem58);
                   }
@@ -16568,7 +16568,7 @@ import org.slf4j.LoggerFactory;
             struct.success = new ArrayList<ByteBuffer>(_list61.size);
             for (int _i62 = 0; _i62 < _list61.size; ++_i62)
             {
-              ByteBuffer _elem63; // optional
+              ByteBuffer _elem63; // required
               _elem63 = iprot.readBinary();
               struct.success.add(_elem63);
             }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/TDiskUsage.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/TDiskUsage.java
b/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/TDiskUsage.java
index 822bfbb..abd97ba 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/TDiskUsage.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/TDiskUsage.java
@@ -436,7 +436,7 @@ import org.slf4j.LoggerFactory;
                 struct.tables = new ArrayList<String>(_list0.size);
                 for (int _i1 = 0; _i1 < _list0.size; ++_i1)
                 {
-                  String _elem2; // optional
+                  String _elem2; // required
                   _elem2 = iprot.readString();
                   struct.tables.add(_elem2);
                 }
@@ -534,7 +534,7 @@ import org.slf4j.LoggerFactory;
           struct.tables = new ArrayList<String>(_list5.size);
           for (int _i6 = 0; _i6 < _list5.size; ++_i6)
           {
-            String _elem7; // optional
+            String _elem7; // required
             _elem7 = iprot.readString();
             struct.tables.add(_elem7);
           }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/core/src/main/java/org/apache/accumulo/core/data/thrift/MultiScanResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/data/thrift/MultiScanResult.java
b/core/src/main/java/org/apache/accumulo/core/data/thrift/MultiScanResult.java
index caeda88..f0b8a87 100644
--- a/core/src/main/java/org/apache/accumulo/core/data/thrift/MultiScanResult.java
+++ b/core/src/main/java/org/apache/accumulo/core/data/thrift/MultiScanResult.java
@@ -854,7 +854,7 @@ import org.slf4j.LoggerFactory;
                 struct.results = new ArrayList<TKeyValue>(_list16.size);
                 for (int _i17 = 0; _i17 < _list16.size; ++_i17)
                 {
-                  TKeyValue _elem18; // optional
+                  TKeyValue _elem18; // required
                   _elem18 = new TKeyValue();
                   _elem18.read(iprot);
                   struct.results.add(_elem18);
@@ -882,7 +882,7 @@ import org.slf4j.LoggerFactory;
                     _val22 = new ArrayList<TRange>(_list23.size);
                     for (int _i24 = 0; _i24 < _list23.size; ++_i24)
                     {
-                      TRange _elem25; // optional
+                      TRange _elem25; // required
                       _elem25 = new TRange();
                       _elem25.read(iprot);
                       _val22.add(_elem25);
@@ -905,7 +905,7 @@ import org.slf4j.LoggerFactory;
                 struct.fullScans = new ArrayList<TKeyExtent>(_list26.size);
                 for (int _i27 = 0; _i27 < _list26.size; ++_i27)
                 {
-                  TKeyExtent _elem28; // optional
+                  TKeyExtent _elem28; // required
                   _elem28 = new TKeyExtent();
                   _elem28.read(iprot);
                   struct.fullScans.add(_elem28);
@@ -1124,7 +1124,7 @@ import org.slf4j.LoggerFactory;
           struct.results = new ArrayList<TKeyValue>(_list37.size);
           for (int _i38 = 0; _i38 < _list37.size; ++_i38)
           {
-            TKeyValue _elem39; // optional
+            TKeyValue _elem39; // required
             _elem39 = new TKeyValue();
             _elem39.read(iprot);
             struct.results.add(_elem39);
@@ -1147,7 +1147,7 @@ import org.slf4j.LoggerFactory;
               _val43 = new ArrayList<TRange>(_list44.size);
               for (int _i45 = 0; _i45 < _list44.size; ++_i45)
               {
-                TRange _elem46; // optional
+                TRange _elem46; // required
                 _elem46 = new TRange();
                 _elem46.read(iprot);
                 _val43.add(_elem46);
@@ -1164,7 +1164,7 @@ import org.slf4j.LoggerFactory;
           struct.fullScans = new ArrayList<TKeyExtent>(_list47.size);
           for (int _i48 = 0; _i48 < _list47.size; ++_i48)
           {
-            TKeyExtent _elem49; // optional
+            TKeyExtent _elem49; // required
             _elem49 = new TKeyExtent();
             _elem49.read(iprot);
             struct.fullScans.add(_elem49);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/core/src/main/java/org/apache/accumulo/core/data/thrift/ScanResult.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/data/thrift/ScanResult.java b/core/src/main/java/org/apache/accumulo/core/data/thrift/ScanResult.java
index 8498120..6472587 100644
--- a/core/src/main/java/org/apache/accumulo/core/data/thrift/ScanResult.java
+++ b/core/src/main/java/org/apache/accumulo/core/data/thrift/ScanResult.java
@@ -436,7 +436,7 @@ import org.slf4j.LoggerFactory;
                 struct.results = new ArrayList<TKeyValue>(_list8.size);
                 for (int _i9 = 0; _i9 < _list8.size; ++_i9)
                 {
-                  TKeyValue _elem10; // optional
+                  TKeyValue _elem10; // required
                   _elem10 = new TKeyValue();
                   _elem10.read(iprot);
                   struct.results.add(_elem10);
@@ -535,7 +535,7 @@ import org.slf4j.LoggerFactory;
           struct.results = new ArrayList<TKeyValue>(_list13.size);
           for (int _i14 = 0; _i14 < _list13.size; ++_i14)
           {
-            TKeyValue _elem15; // optional
+            TKeyValue _elem15; // required
             _elem15 = new TKeyValue();
             _elem15.read(iprot);
             struct.results.add(_elem15);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/core/src/main/java/org/apache/accumulo/core/data/thrift/TMutation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/data/thrift/TMutation.java b/core/src/main/java/org/apache/accumulo/core/data/thrift/TMutation.java
index 121a798..f698892 100644
--- a/core/src/main/java/org/apache/accumulo/core/data/thrift/TMutation.java
+++ b/core/src/main/java/org/apache/accumulo/core/data/thrift/TMutation.java
@@ -630,7 +630,7 @@ import org.slf4j.LoggerFactory;
                 struct.values = new ArrayList<ByteBuffer>(_list0.size);
                 for (int _i1 = 0; _i1 < _list0.size; ++_i1)
                 {
-                  ByteBuffer _elem2; // optional
+                  ByteBuffer _elem2; // required
                   _elem2 = iprot.readBinary();
                   struct.values.add(_elem2);
                 }
@@ -758,7 +758,7 @@ import org.slf4j.LoggerFactory;
           struct.values = new ArrayList<ByteBuffer>(_list5.size);
           for (int _i6 = 0; _i6 < _list5.size; ++_i6)
           {
-            ByteBuffer _elem7; // optional
+            ByteBuffer _elem7; // required
             _elem7 = iprot.readBinary();
             struct.values.add(_elem7);
           }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/core/src/main/java/org/apache/accumulo/core/data/thrift/UpdateErrors.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/data/thrift/UpdateErrors.java b/core/src/main/java/org/apache/accumulo/core/data/thrift/UpdateErrors.java
index 537732a..59ce5cb 100644
--- a/core/src/main/java/org/apache/accumulo/core/data/thrift/UpdateErrors.java
+++ b/core/src/main/java/org/apache/accumulo/core/data/thrift/UpdateErrors.java
@@ -584,7 +584,7 @@ import org.slf4j.LoggerFactory;
                 struct.violationSummaries = new ArrayList<TConstraintViolationSummary>(_list54.size);
                 for (int _i55 = 0; _i55 < _list54.size; ++_i55)
                 {
-                  TConstraintViolationSummary _elem56; // optional
+                  TConstraintViolationSummary _elem56; // required
                   _elem56 = new TConstraintViolationSummary();
                   _elem56.read(iprot);
                   struct.violationSummaries.add(_elem56);
@@ -755,7 +755,7 @@ import org.slf4j.LoggerFactory;
           struct.violationSummaries = new ArrayList<TConstraintViolationSummary>(_list71.size);
           for (int _i72 = 0; _i72 < _list71.size; ++_i72)
           {
-            TConstraintViolationSummary _elem73; // optional
+            TConstraintViolationSummary _elem73; // required
             _elem73 = new TConstraintViolationSummary();
             _elem73.read(iprot);
             struct.violationSummaries.add(_elem73);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/core/src/main/java/org/apache/accumulo/core/master/thrift/MasterClientService.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/master/thrift/MasterClientService.java
b/core/src/main/java/org/apache/accumulo/core/master/thrift/MasterClientService.java
index 796d837..5b9949a 100644
--- a/core/src/main/java/org/apache/accumulo/core/master/thrift/MasterClientService.java
+++ b/core/src/main/java/org/apache/accumulo/core/master/thrift/MasterClientService.java
@@ -15517,7 +15517,7 @@ import org.slf4j.LoggerFactory;
                   struct.arguments = new ArrayList<ByteBuffer>(_list70.size);
                   for (int _i71 = 0; _i71 < _list70.size; ++_i71)
                   {
-                    ByteBuffer _elem72; // optional
+                    ByteBuffer _elem72; // required
                     _elem72 = iprot.readBinary();
                     struct.arguments.add(_elem72);
                   }
@@ -15721,7 +15721,7 @@ import org.slf4j.LoggerFactory;
             struct.arguments = new ArrayList<ByteBuffer>(_list81.size);
             for (int _i82 = 0; _i82 < _list81.size; ++_i82)
             {
-              ByteBuffer _elem83; // optional
+              ByteBuffer _elem83; // required
               _elem83 = iprot.readBinary();
               struct.arguments.add(_elem83);
             }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/core/src/main/java/org/apache/accumulo/core/master/thrift/MasterMonitorInfo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/master/thrift/MasterMonitorInfo.java
b/core/src/main/java/org/apache/accumulo/core/master/thrift/MasterMonitorInfo.java
index fc9d515..94843c0 100644
--- a/core/src/main/java/org/apache/accumulo/core/master/thrift/MasterMonitorInfo.java
+++ b/core/src/main/java/org/apache/accumulo/core/master/thrift/MasterMonitorInfo.java
@@ -1041,7 +1041,7 @@ import org.slf4j.LoggerFactory;
                 struct.tServerInfo = new ArrayList<TabletServerStatus>(_list22.size);
                 for (int _i23 = 0; _i23 < _list22.size; ++_i23)
                 {
-                  TabletServerStatus _elem24; // optional
+                  TabletServerStatus _elem24; // required
                   _elem24 = new TabletServerStatus();
                   _elem24.read(iprot);
                   struct.tServerInfo.add(_elem24);
@@ -1104,7 +1104,7 @@ import org.slf4j.LoggerFactory;
                 struct.serversShuttingDown = new HashSet<String>(2*_set29.size);
                 for (int _i30 = 0; _i30 < _set29.size; ++_i30)
                 {
-                  String _elem31; // optional
+                  String _elem31; // required
                   _elem31 = iprot.readString();
                   struct.serversShuttingDown.add(_elem31);
                 }
@@ -1122,7 +1122,7 @@ import org.slf4j.LoggerFactory;
                 struct.deadTabletServers = new ArrayList<DeadServer>(_list32.size);
                 for (int _i33 = 0; _i33 < _list32.size; ++_i33)
                 {
-                  DeadServer _elem34; // optional
+                  DeadServer _elem34; // required
                   _elem34 = new DeadServer();
                   _elem34.read(iprot);
                   struct.deadTabletServers.add(_elem34);
@@ -1351,7 +1351,7 @@ import org.slf4j.LoggerFactory;
           struct.tServerInfo = new ArrayList<TabletServerStatus>(_list49.size);
           for (int _i50 = 0; _i50 < _list49.size; ++_i50)
           {
-            TabletServerStatus _elem51; // optional
+            TabletServerStatus _elem51; // required
             _elem51 = new TabletServerStatus();
             _elem51.read(iprot);
             struct.tServerInfo.add(_elem51);
@@ -1392,7 +1392,7 @@ import org.slf4j.LoggerFactory;
           struct.serversShuttingDown = new HashSet<String>(2*_set56.size);
           for (int _i57 = 0; _i57 < _set56.size; ++_i57)
           {
-            String _elem58; // optional
+            String _elem58; // required
             _elem58 = iprot.readString();
             struct.serversShuttingDown.add(_elem58);
           }
@@ -1405,7 +1405,7 @@ import org.slf4j.LoggerFactory;
           struct.deadTabletServers = new ArrayList<DeadServer>(_list59.size);
           for (int _i60 = 0; _i60 < _list59.size; ++_i60)
           {
-            DeadServer _elem61; // optional
+            DeadServer _elem61; // required
             _elem61 = new DeadServer();
             _elem61.read(iprot);
             struct.deadTabletServers.add(_elem61);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/core/src/main/java/org/apache/accumulo/core/master/thrift/TabletServerStatus.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/master/thrift/TabletServerStatus.java
b/core/src/main/java/org/apache/accumulo/core/master/thrift/TabletServerStatus.java
index 19c789b..a7e29d6 100644
--- a/core/src/main/java/org/apache/accumulo/core/master/thrift/TabletServerStatus.java
+++ b/core/src/main/java/org/apache/accumulo/core/master/thrift/TabletServerStatus.java
@@ -1219,7 +1219,7 @@ import org.slf4j.LoggerFactory;
                 struct.logSorts = new ArrayList<RecoveryStatus>(_list4.size);
                 for (int _i5 = 0; _i5 < _list4.size; ++_i5)
                 {
-                  RecoveryStatus _elem6; // optional
+                  RecoveryStatus _elem6; // required
                   _elem6 = new RecoveryStatus();
                   _elem6.read(iprot);
                   struct.logSorts.add(_elem6);
@@ -1462,7 +1462,7 @@ import org.slf4j.LoggerFactory;
           struct.logSorts = new ArrayList<RecoveryStatus>(_list15.size);
           for (int _i16 = 0; _i16 < _list15.size; ++_i16)
           {
-            RecoveryStatus _elem17; // optional
+            RecoveryStatus _elem17; // required
             _elem17 = new RecoveryStatus();
             _elem17.read(iprot);
             struct.logSorts.add(_elem17);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/core/src/main/java/org/apache/accumulo/core/master/thrift/TabletSplit.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/master/thrift/TabletSplit.java b/core/src/main/java/org/apache/accumulo/core/master/thrift/TabletSplit.java
index 47a6e0c..6102792 100644
--- a/core/src/main/java/org/apache/accumulo/core/master/thrift/TabletSplit.java
+++ b/core/src/main/java/org/apache/accumulo/core/master/thrift/TabletSplit.java
@@ -448,7 +448,7 @@ import org.slf4j.LoggerFactory;
                 struct.newTablets = new ArrayList<org.apache.accumulo.core.data.thrift.TKeyExtent>(_list62.size);
                 for (int _i63 = 0; _i63 < _list62.size; ++_i63)
                 {
-                  org.apache.accumulo.core.data.thrift.TKeyExtent _elem64; // optional
+                  org.apache.accumulo.core.data.thrift.TKeyExtent _elem64; // required
                   _elem64 = new org.apache.accumulo.core.data.thrift.TKeyExtent();
                   _elem64.read(iprot);
                   struct.newTablets.add(_elem64);
@@ -546,7 +546,7 @@ import org.slf4j.LoggerFactory;
           struct.newTablets = new ArrayList<org.apache.accumulo.core.data.thrift.TKeyExtent>(_list67.size);
           for (int _i68 = 0; _i68 < _list67.size; ++_i68)
           {
-            org.apache.accumulo.core.data.thrift.TKeyExtent _elem69; // optional
+            org.apache.accumulo.core.data.thrift.TKeyExtent _elem69; // required
             _elem69 = new org.apache.accumulo.core.data.thrift.TKeyExtent();
             _elem69.read(iprot);
             struct.newTablets.add(_elem69);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ActiveCompaction.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ActiveCompaction.java
b/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ActiveCompaction.java
index 127e09a..2509bd9 100644
--- a/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ActiveCompaction.java
+++ b/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ActiveCompaction.java
@@ -1231,7 +1231,7 @@ import org.slf4j.LoggerFactory;
                 struct.inputFiles = new ArrayList<String>(_list52.size);
                 for (int _i53 = 0; _i53 < _list52.size; ++_i53)
                 {
-                  String _elem54; // optional
+                  String _elem54; // required
                   _elem54 = iprot.readString();
                   struct.inputFiles.add(_elem54);
                 }
@@ -1297,7 +1297,7 @@ import org.slf4j.LoggerFactory;
                 struct.ssiList = new ArrayList<org.apache.accumulo.core.data.thrift.IterInfo>(_list55.size);
                 for (int _i56 = 0; _i56 < _list55.size; ++_i56)
                 {
-                  org.apache.accumulo.core.data.thrift.IterInfo _elem57; // optional
+                  org.apache.accumulo.core.data.thrift.IterInfo _elem57; // required
                   _elem57 = new org.apache.accumulo.core.data.thrift.IterInfo();
                   _elem57.read(iprot);
                   struct.ssiList.add(_elem57);
@@ -1567,7 +1567,7 @@ import org.slf4j.LoggerFactory;
           struct.inputFiles = new ArrayList<String>(_list74.size);
           for (int _i75 = 0; _i75 < _list74.size; ++_i75)
           {
-            String _elem76; // optional
+            String _elem76; // required
             _elem76 = iprot.readString();
             struct.inputFiles.add(_elem76);
           }
@@ -1604,7 +1604,7 @@ import org.slf4j.LoggerFactory;
           struct.ssiList = new ArrayList<org.apache.accumulo.core.data.thrift.IterInfo>(_list77.size);
           for (int _i78 = 0; _i78 < _list77.size; ++_i78)
           {
-            org.apache.accumulo.core.data.thrift.IterInfo _elem79; // optional
+            org.apache.accumulo.core.data.thrift.IterInfo _elem79; // required
             _elem79 = new org.apache.accumulo.core.data.thrift.IterInfo();
             _elem79.read(iprot);
             struct.ssiList.add(_elem79);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ActiveScan.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ActiveScan.java
b/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ActiveScan.java
index e935751..dc56b44 100644
--- a/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ActiveScan.java
+++ b/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ActiveScan.java
@@ -1382,7 +1382,7 @@ import org.slf4j.LoggerFactory;
                 struct.columns = new ArrayList<org.apache.accumulo.core.data.thrift.TColumn>(_list8.size);
                 for (int _i9 = 0; _i9 < _list8.size; ++_i9)
                 {
-                  org.apache.accumulo.core.data.thrift.TColumn _elem10; // optional
+                  org.apache.accumulo.core.data.thrift.TColumn _elem10; // required
                   _elem10 = new org.apache.accumulo.core.data.thrift.TColumn();
                   _elem10.read(iprot);
                   struct.columns.add(_elem10);
@@ -1401,7 +1401,7 @@ import org.slf4j.LoggerFactory;
                 struct.ssiList = new ArrayList<org.apache.accumulo.core.data.thrift.IterInfo>(_list11.size);
                 for (int _i12 = 0; _i12 < _list11.size; ++_i12)
                 {
-                  org.apache.accumulo.core.data.thrift.IterInfo _elem13; // optional
+                  org.apache.accumulo.core.data.thrift.IterInfo _elem13; // required
                   _elem13 = new org.apache.accumulo.core.data.thrift.IterInfo();
                   _elem13.read(iprot);
                   struct.ssiList.add(_elem13);
@@ -1452,7 +1452,7 @@ import org.slf4j.LoggerFactory;
                 struct.authorizations = new ArrayList<ByteBuffer>(_list22.size);
                 for (int _i23 = 0; _i23 < _list22.size; ++_i23)
                 {
-                  ByteBuffer _elem24; // optional
+                  ByteBuffer _elem24; // required
                   _elem24 = iprot.readBinary();
                   struct.authorizations.add(_elem24);
                 }
@@ -1739,7 +1739,7 @@ import org.slf4j.LoggerFactory;
           struct.columns = new ArrayList<org.apache.accumulo.core.data.thrift.TColumn>(_list35.size);
           for (int _i36 = 0; _i36 < _list35.size; ++_i36)
           {
-            org.apache.accumulo.core.data.thrift.TColumn _elem37; // optional
+            org.apache.accumulo.core.data.thrift.TColumn _elem37; // required
             _elem37 = new org.apache.accumulo.core.data.thrift.TColumn();
             _elem37.read(iprot);
             struct.columns.add(_elem37);
@@ -1753,7 +1753,7 @@ import org.slf4j.LoggerFactory;
           struct.ssiList = new ArrayList<org.apache.accumulo.core.data.thrift.IterInfo>(_list38.size);
           for (int _i39 = 0; _i39 < _list38.size; ++_i39)
           {
-            org.apache.accumulo.core.data.thrift.IterInfo _elem40; // optional
+            org.apache.accumulo.core.data.thrift.IterInfo _elem40; // required
             _elem40 = new org.apache.accumulo.core.data.thrift.IterInfo();
             _elem40.read(iprot);
             struct.ssiList.add(_elem40);
@@ -1793,7 +1793,7 @@ import org.slf4j.LoggerFactory;
           struct.authorizations = new ArrayList<ByteBuffer>(_list49.size);
           for (int _i50 = 0; _i50 < _list49.size; ++_i50)
           {
-            ByteBuffer _elem51; // optional
+            ByteBuffer _elem51; // required
             _elem51 = iprot.readBinary();
             struct.authorizations.add(_elem51);
           }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ConstraintViolationException.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ConstraintViolationException.java
b/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ConstraintViolationException.java
index 31964be..98f6642 100644
--- a/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ConstraintViolationException.java
+++ b/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/ConstraintViolationException.java
@@ -359,7 +359,7 @@ import org.slf4j.LoggerFactory;
                 struct.violationSummaries = new ArrayList<org.apache.accumulo.core.data.thrift.TConstraintViolationSummary>(_list0.size);
                 for (int _i1 = 0; _i1 < _list0.size; ++_i1)
                 {
-                  org.apache.accumulo.core.data.thrift.TConstraintViolationSummary _elem2;
// optional
+                  org.apache.accumulo.core.data.thrift.TConstraintViolationSummary _elem2;
// required
                   _elem2 = new org.apache.accumulo.core.data.thrift.TConstraintViolationSummary();
                   _elem2.read(iprot);
                   struct.violationSummaries.add(_elem2);
@@ -441,7 +441,7 @@ import org.slf4j.LoggerFactory;
           struct.violationSummaries = new ArrayList<org.apache.accumulo.core.data.thrift.TConstraintViolationSummary>(_list5.size);
           for (int _i6 = 0; _i6 < _list5.size; ++_i6)
           {
-            org.apache.accumulo.core.data.thrift.TConstraintViolationSummary _elem7; // optional
+            org.apache.accumulo.core.data.thrift.TConstraintViolationSummary _elem7; // required
             _elem7 = new org.apache.accumulo.core.data.thrift.TConstraintViolationSummary();
             _elem7.read(iprot);
             struct.violationSummaries.add(_elem7);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/IteratorConfig.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/IteratorConfig.java
b/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/IteratorConfig.java
index 0d90534..03722be 100644
--- a/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/IteratorConfig.java
+++ b/core/src/main/java/org/apache/accumulo/core/tabletserver/thrift/IteratorConfig.java
@@ -359,7 +359,7 @@ import org.slf4j.LoggerFactory;
                 struct.iterators = new ArrayList<TIteratorSetting>(_list98.size);
                 for (int _i99 = 0; _i99 < _list98.size; ++_i99)
                 {
-                  TIteratorSetting _elem100; // optional
+                  TIteratorSetting _elem100; // required
                   _elem100 = new TIteratorSetting();
                   _elem100.read(iprot);
                   struct.iterators.add(_elem100);
@@ -441,7 +441,7 @@ import org.slf4j.LoggerFactory;
           struct.iterators = new ArrayList<TIteratorSetting>(_list103.size);
           for (int _i104 = 0; _i104 < _list103.size; ++_i104)
           {
-            TIteratorSetting _elem105; // optional
+            TIteratorSetting _elem105; // required
             _elem105 = new TIteratorSetting();
             _elem105.read(iprot);
             struct.iterators.add(_elem105);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/176df80f/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
----------------------------------------------------------------------
diff --git a/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java b/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
index 3b0c8b1..1a70229 100644
--- a/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
+++ b/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
@@ -19,12 +19,14 @@ package org.apache.accumulo.proxy;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Properties;
 import java.util.Set;
 import java.util.SortedSet;
@@ -38,6 +40,9 @@ import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.BatchScanner;
 import org.apache.accumulo.core.client.BatchWriter;
 import org.apache.accumulo.core.client.BatchWriterConfig;
+import org.apache.accumulo.core.client.ConditionalWriter;
+import org.apache.accumulo.core.client.ConditionalWriter.Result;
+import org.apache.accumulo.core.client.ConditionalWriterConfig;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.IteratorSetting;
@@ -57,6 +62,7 @@ import org.apache.accumulo.core.client.security.SecurityErrorCode;
 import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.data.Column;
+import org.apache.accumulo.core.data.ConditionalMutation;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Mutation;
@@ -76,6 +82,10 @@ import org.apache.accumulo.proxy.thrift.BatchScanOptions;
 import org.apache.accumulo.proxy.thrift.ColumnUpdate;
 import org.apache.accumulo.proxy.thrift.CompactionReason;
 import org.apache.accumulo.proxy.thrift.CompactionType;
+import org.apache.accumulo.proxy.thrift.Condition;
+import org.apache.accumulo.proxy.thrift.ConditionalStatus;
+import org.apache.accumulo.proxy.thrift.ConditionalUpdates;
+import org.apache.accumulo.proxy.thrift.ConditionalWriterOptions;
 import org.apache.accumulo.proxy.thrift.DiskUsage;
 import org.apache.accumulo.proxy.thrift.KeyValue;
 import org.apache.accumulo.proxy.thrift.KeyValueAndPeek;
@@ -148,8 +158,16 @@ public class ProxyServer implements AccumuloProxy.Iface {
     public CloseScanner() {}
   }
   
+  public static class CloseConditionalWriter implements RemovalListener<UUID,ConditionalWriter>
{
+    @Override
+    public void onRemoval(RemovalNotification<UUID,ConditionalWriter> notification)
{
+      notification.getValue().close();
+    }
+  }
+
   protected Cache<UUID,ScannerPlusIterator> scannerCache;
   protected Cache<UUID,BatchWriterPlusException> writerCache;
+  protected Cache<UUID,ConditionalWriter> conditionalWriterCache;
   
   public ProxyServer(Properties props) {
     
@@ -169,6 +187,9 @@ public class ProxyServer implements AccumuloProxy.Iface {
     scannerCache = CacheBuilder.newBuilder().expireAfterAccess(10, TimeUnit.MINUTES).maximumSize(1000).removalListener(new
CloseScanner()).build();
     
     writerCache = CacheBuilder.newBuilder().expireAfterAccess(10, TimeUnit.MINUTES).maximumSize(1000).removalListener(new
CloseWriter()).build();
+    
+    conditionalWriterCache = CacheBuilder.newBuilder().expireAfterAccess(10, TimeUnit.MINUTES).maximumSize(1000).removalListener(new
CloseConditionalWriter())
+        .build();
   }
   
   protected Connector getConnector(ByteBuffer login) throws Exception {
@@ -1131,41 +1152,50 @@ public class ProxyServer implements AccumuloProxy.Iface {
     
     for (Map.Entry<ByteBuffer,List<ColumnUpdate>> entry : cells.entrySet()) {
       Mutation m = new Mutation(ByteBufferUtil.toBytes(entry.getKey()));
-      
-      for (ColumnUpdate update : entry.getValue()) {
-        ColumnVisibility viz = EMPTY_VIS;
-        if (update.isSetColVisibility()) {
-          Text vizText = new Text(update.getColVisibility());
-          viz = vizMap.get(vizText);
-          if (viz == null) {
-            vizMap.put(vizText, viz = new ColumnVisibility(vizText));
-          }
-        }
-        byte[] value = new byte[0];
-        if (update.isSetValue())
-          value = update.getValue();
-        if (update.isSetTimestamp()) {
+      addUpdatesToMutation(vizMap, m, entry.getValue());
+      try {
+        bwpe.writer.addMutation(m);
+      } catch (MutationsRejectedException mre) {
+        bwpe.exception = mre;
+      }
+    }
+  }
+  
+  private void addUpdatesToMutation(HashMap<Text,ColumnVisibility> vizMap, Mutation
m, List<ColumnUpdate> cu) {
+    for (ColumnUpdate update : cu) {
+      ColumnVisibility viz = EMPTY_VIS;
+      if (update.isSetColVisibility()) {
+        viz = getCahcedCV(vizMap, update.getColVisibility());
+      }
+      byte[] value = new byte[0];
+      if (update.isSetValue())
+        value = update.getValue();
+      if (update.isSetTimestamp()) {
+        if (update.isSetDeleteCell()) {
+          m.putDelete(update.getColFamily(), update.getColQualifier(), viz, update.getTimestamp());
+        } else {
           if (update.isSetDeleteCell()) {
             m.putDelete(update.getColFamily(), update.getColQualifier(), viz, update.getTimestamp());
           } else {
-            if (update.isSetDeleteCell()) {
-              m.putDelete(update.getColFamily(), update.getColQualifier(), viz, update.getTimestamp());
-            } else {
-              m.put(update.getColFamily(), update.getColQualifier(), viz, update.getTimestamp(),
value);
-            }
+            m.put(update.getColFamily(), update.getColQualifier(), viz, update.getTimestamp(),
value);
           }
-        } else {
-          m.put(update.getColFamily(), update.getColQualifier(), viz, value);
         }
-      }
-      try {
-        bwpe.writer.addMutation(m);
-      } catch (MutationsRejectedException mre) {
-        bwpe.exception = mre;
+      } else {
+        m.put(update.getColFamily(), update.getColQualifier(), viz, value);
       }
     }
   }
   
+  private static ColumnVisibility getCahcedCV(HashMap<Text,ColumnVisibility> vizMap,
byte[] cv) {
+    ColumnVisibility viz;
+    Text vizText = new Text(cv);
+    viz = vizMap.get(vizText);
+    if (viz == null) {
+      vizMap.put(vizText, viz = new ColumnVisibility(vizText));
+    }
+    return viz;
+  }
+  
   @Override
   public String createWriter(ByteBuffer login, String tableName, WriterOptions opts) throws
org.apache.accumulo.proxy.thrift.AccumuloException,
       org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException,
TException {
@@ -1491,4 +1521,119 @@ public class ProxyServer implements AccumuloProxy.Iface {
       return false;
     }
   }
+  
+  @Override
+  public String createConditionalWriter(ByteBuffer login, String tableName, ConditionalWriterOptions
options)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
+    try {
+      ConditionalWriterConfig cwc = new ConditionalWriterConfig();
+      if (options.getMaxMemory() != 0) {
+        // TODO
+      }
+      if (options.isSetThreads() && options.getThreads() != 0)
+        cwc.setMaxWriteThreads(options.getThreads());
+      if (options.isSetTimeoutMs() && options.getTimeoutMs() != 0)
+        cwc.setTimeout(options.getTimeoutMs(), TimeUnit.MILLISECONDS);
+      if (options.isSetAuthorizations() && options.getAuthorizations() != null)
+        cwc.setAuthorizations(getAuthorizations(options.getAuthorizations()));
+      
+      ConditionalWriter cw = getConnector(login).createConditionalWriter(tableName, cwc);
+      
+      UUID id = UUID.randomUUID();
+      
+      conditionalWriterCache.put(id, cw);
+      
+      return id.toString();
+    } catch (Exception e) {
+      handleExceptionTNF(e);
+      return null;
+    }
+  }
+  
+  @Override
+  public Map<ByteBuffer,ConditionalStatus> updateRowsConditionally(String conditionalWriter,
Map<ByteBuffer,ConditionalUpdates> updates) throws UnknownWriter,
+      org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
TException {
+    
+    ConditionalWriter cw = conditionalWriterCache.getIfPresent(UUID.fromString(conditionalWriter));
+    
+    if (cw == null) {
+      throw new UnknownWriter();
+    }
+    
+    try {
+      HashMap<Text,ColumnVisibility> vizMap = new HashMap<Text,ColumnVisibility>();
+      
+      ArrayList<ConditionalMutation> cmuts = new ArrayList<ConditionalMutation>(updates.size());
+      for (Entry<ByteBuffer,ConditionalUpdates> cu : updates.entrySet()) {
+        ConditionalMutation cmut = null;
+        
+        for (Condition tcond : cu.getValue().conditions) {
+          org.apache.accumulo.core.data.Condition cond = new org.apache.accumulo.core.data.Condition(tcond.column.getColFamily(),
+              tcond.column.getColQualifier());
+          
+          if (tcond.getColumn().getColVisibility() != null && tcond.getColumn().getColVisibility().length
> 0) {
+            cond.setVisibility(getCahcedCV(vizMap, tcond.getColumn().getColVisibility()));
+          }
+          
+          if (tcond.isSetValue())
+            cond.setValue(tcond.getValue());
+          
+          if (tcond.isSetTimestamp())
+            cond.setTimestamp(tcond.getTimestamp());
+          
+          if (tcond.isSetIterators()) {
+            cond.setIterators(getIteratorSettings(tcond.getIterators()).toArray(new IteratorSetting[tcond.getIterators().size()]));
+          }
+          
+          if (cmut == null)
+            cmut = new ConditionalMutation(ByteBufferUtil.toBytes(cu.getKey()), cond);
+          else
+            cmut.addCondition(cond);
+        }
+        
+        addUpdatesToMutation(vizMap, cmut, cu.getValue().updates);
+        
+        cmuts.add(cmut);
+      }
+      
+      Iterator<Result> results = cw.write(cmuts.iterator());
+      
+      HashMap<ByteBuffer,ConditionalStatus> resultMap = new HashMap<ByteBuffer,ConditionalStatus>();
+      
+      while (results.hasNext()) {
+        Result result = results.next();
+        ByteBuffer row = ByteBuffer.wrap(result.getMutation().getRow());
+        ConditionalStatus status = ConditionalStatus.valueOf(result.getStatus().name());
+        resultMap.put(row, status);
+      }
+      
+      return resultMap;
+    } catch (Exception e) {
+      handleException(e);
+      return null;
+    }
+  }
+  
+  @Override
+  public void closeConditionalWriter(String conditionalWriter) throws TException {
+    ConditionalWriter cw = conditionalWriterCache.getIfPresent(UUID.fromString(conditionalWriter));
+    if (cw != null) {
+      cw.close();
+      conditionalWriterCache.invalidate(UUID.fromString(conditionalWriter));
+    }
+  }
+  
+  @Override
+  public ConditionalStatus updateRowConditionally(ByteBuffer login, String tableName, ByteBuffer
row, ConditionalUpdates updates)
+      throws org.apache.accumulo.proxy.thrift.AccumuloException, org.apache.accumulo.proxy.thrift.AccumuloSecurityException,
+      org.apache.accumulo.proxy.thrift.TableNotFoundException, TException {
+    
+    String cwid = createConditionalWriter(login, tableName, new ConditionalWriterOptions());
+    try {
+      return updateRowsConditionally(cwid, Collections.singletonMap(row, updates)).get(row);
+    } finally {
+      closeConditionalWriter(cwid);
+    }
+  }
 }


Mime
View raw message