You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/07/05 12:13:46 UTC

[1/4] ignite git commit: IGNITE-5663: ODBC: Closing cursor do not reset prepared statement anymore

Repository: ignite
Updated Branches:
  refs/heads/ignite-gg-12306-1 [created] 032f2d3ef


IGNITE-5663: ODBC: Closing cursor do not reset prepared statement anymore

(cherry picked from commit 64c156e)


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/301f310b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/301f310b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/301f310b

Branch: refs/heads/ignite-gg-12306-1
Commit: 301f310b6348b3f6fbe54b16d065569755e71bce
Parents: aa21a9b
Author: Igor Sapego <is...@gridgain.com>
Authored: Tue Jul 4 19:42:33 2017 +0300
Committer: Igor Sapego <is...@gridgain.com>
Committed: Wed Jul 5 14:21:40 2017 +0300

----------------------------------------------------------------------
 .../cpp/odbc-test/src/queries_test.cpp          | 61 ++++++++++++++++++++
 modules/platforms/cpp/odbc/src/odbc.cpp         |  2 +-
 modules/platforms/cpp/odbc/src/statement.cpp    |  3 -
 3 files changed, 62 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/301f310b/modules/platforms/cpp/odbc-test/src/queries_test.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc-test/src/queries_test.cpp b/modules/platforms/cpp/odbc-test/src/queries_test.cpp
index 41bc1fc..263993c 100644
--- a/modules/platforms/cpp/odbc-test/src/queries_test.cpp
+++ b/modules/platforms/cpp/odbc-test/src/queries_test.cpp
@@ -1934,5 +1934,66 @@ BOOST_AUTO_TEST_CASE(TestParamsNum)
     CheckParamsNum("INSERT INTO TestType(_key, strField) VALUES(?, ?)", 2);
 }
 
+BOOST_AUTO_TEST_CASE(TestExecuteAfterCursorClose)
+{
+    TestType in(1, 2, 3, 4, "5", 6.0f, 7.0, true, Guid(8, 9), MakeDateGmt(1987, 6, 5),
+        MakeTimeGmt(12, 48, 12), MakeTimestampGmt(1998, 12, 27, 1, 2, 3, 456));
+
+    cache1.Put(1, in);
+
+    Connect("DRIVER={Apache Ignite};ADDRESS=127.0.0.1:11110;SCHEMA=cache");
+
+    int64_t key = 0;
+    char strField[1024] = { 0 };
+    SQLLEN strFieldLen = 0;
+
+    // Binding columns.
+    SQLRETURN ret = SQLBindCol(stmt, 1, SQL_C_SLONG, &key, 0, 0);
+
+    if (!SQL_SUCCEEDED(ret))
+        BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+
+    // Binding columns.
+    ret = SQLBindCol(stmt, 2, SQL_C_CHAR, &strField, sizeof(strField), &strFieldLen);
+
+    if (!SQL_SUCCEEDED(ret))
+        BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+
+    // Just selecting everything to make sure everything is OK
+    SQLCHAR selectReq[] = "SELECT _key, strField FROM TestType";
+
+    ret = SQLPrepare(stmt, selectReq, sizeof(selectReq));
+
+    if (!SQL_SUCCEEDED(ret))
+        BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+
+    ret = SQLExecute(stmt);
+
+    if (!SQL_SUCCEEDED(ret))
+        BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+
+    ret = SQLFreeStmt(stmt, SQL_CLOSE);
+
+    if (!SQL_SUCCEEDED(ret))
+        BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+
+    ret = SQLExecute(stmt);
+
+    if (!SQL_SUCCEEDED(ret))
+        BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+
+    ret = SQLFetch(stmt);
+    
+    if (!SQL_SUCCEEDED(ret))
+        BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+
+    BOOST_CHECK_EQUAL(key, 1);
+
+    BOOST_CHECK_EQUAL(std::string(strField, strFieldLen), "5");
+
+    ret = SQLFetch(stmt);
+
+    BOOST_CHECK_EQUAL(ret, SQL_NO_DATA);
+}
 
 BOOST_AUTO_TEST_SUITE_END()

http://git-wip-us.apache.org/repos/asf/ignite/blob/301f310b/modules/platforms/cpp/odbc/src/odbc.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/src/odbc.cpp b/modules/platforms/cpp/odbc/src/odbc.cpp
index a738598..b450903 100644
--- a/modules/platforms/cpp/odbc/src/odbc.cpp
+++ b/modules/platforms/cpp/odbc/src/odbc.cpp
@@ -212,7 +212,7 @@ namespace ignite
     {
         using odbc::Statement;
 
-        LOG_MSG("SQLFreeStmt called");
+        LOG_MSG("SQLFreeStmt called [option=" << option << ']');
 
         Statement *statement = reinterpret_cast<Statement*>(stmt);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/301f310b/modules/platforms/cpp/odbc/src/statement.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/src/statement.cpp b/modules/platforms/cpp/odbc/src/statement.cpp
index 697f5b4..adc7d6b 100644
--- a/modules/platforms/cpp/odbc/src/statement.cpp
+++ b/modules/platforms/cpp/odbc/src/statement.cpp
@@ -745,9 +745,6 @@ namespace ignite
 
             SqlResult::Type result = currentQuery->Close();
 
-            if (result == SqlResult::AI_SUCCESS)
-                currentQuery.reset();
-
             return result;
         }
 


[4/4] ignite git commit: 12306

Posted by sb...@apache.org.
12306


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/032f2d3e
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/032f2d3e
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/032f2d3e

Branch: refs/heads/ignite-gg-12306-1
Commit: 032f2d3eff6e33ee28fe5c0108a6b6a6a461747c
Parents: 0f9a895
Author: sboikov <sb...@gridgain.com>
Authored: Wed Jul 5 15:13:26 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Wed Jul 5 15:13:26 2017 +0300

----------------------------------------------------------------------
 .../cache/GridCachePartitionExchangeManager.java         |  2 +-
 .../processors/cache/transactions/IgniteTxAdapter.java   |  4 ++--
 .../cache/transactions/IgniteTxLocalAdapter.java         | 11 +++++++++--
 3 files changed, 12 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/032f2d3e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
index 22345d2..d7f451b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
@@ -1550,7 +1550,7 @@ public class GridCachePartitionExchangeManager<K, V> extends GridCacheSharedMana
      * @param timeout Operation timeout.
      * @return {@code True} if found long running operations.
      */
-    private boolean dumpLongRunningOperations0(long timeout) {
+    public boolean dumpLongRunningOperations0(long timeout) {
         long curTime = U.currentTimeMillis();
 
         boolean found = false;

http://git-wip-us.apache.org/repos/asf/ignite/blob/032f2d3e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
index ee8afb0..284bf1a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
@@ -418,10 +418,10 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement
         try {
             for (IgniteTxEntry e : writeMap().values()) {
                 try {
-                    GridCacheEntryEx Entry = e.cached();
+                    GridCacheEntryEx entry = e.cached();
 
                     if (e.op() != NOOP)
-                        Entry.invalidate(null, xidVer);
+                        entry.invalidate(null, xidVer);
                 }
                 catch (Throwable t) {
                     U.error(log, "Failed to invalidate transaction entries while reverting a commit.", t);

http://git-wip-us.apache.org/repos/asf/ignite/blob/032f2d3e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index e4b850d..3848f7d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -32,6 +32,7 @@ import javax.cache.processor.EntryProcessor;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.cache.CacheWriteSynchronizationMode;
 import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.NodeStoppingException;
 import org.apache.ignite.internal.pagemem.wal.StorageException;
 import org.apache.ignite.internal.pagemem.wal.WALPointer;
 import org.apache.ignite.internal.pagemem.wal.record.DataEntry;
@@ -828,11 +829,16 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
                             throw ex;
                         }
                         else {
+                            boolean nodeStopping = X.hasCause(ex, NodeStoppingException.class);
+
                             IgniteCheckedException err = new IgniteTxHeuristicCheckedException("Failed to locally write to cache " +
                                 "(all transaction entries will be invalidated, however there was a window when " +
                                 "entries for this transaction were visible to others): " + this, ex);
 
-                            U.error(log, "Heuristic transaction failure.", err);
+                            if (nodeStopping)
+                                U.warn(log, "Failed to commit transaction, node is stopping [tx=" + this + ", err=" + ex + ']');
+                            else
+                                U.error(log, "Heuristic transaction failure.", err);
 
                             COMMIT_ERR_UPD.compareAndSet(this, null, err);
 
@@ -840,7 +846,8 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
 
                             try {
                                 // Courtesy to minimize damage.
-                                uncommit();
+                                if (!nodeStopping)
+                                    uncommit();
                             }
                             catch (Throwable ex1) {
                                 U.error(log, "Failed to uncommit transaction: " + this, ex1);


[2/4] ignite git commit: Diagnostic info for GridDhtTxFinishFuture.

Posted by sb...@apache.org.
Diagnostic info for GridDhtTxFinishFuture.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/58a937e5
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/58a937e5
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/58a937e5

Branch: refs/heads/ignite-gg-12306-1
Commit: 58a937e5310c62ccb557d8da959bc4ffa8bcca62
Parents: aa21a9b
Author: sboikov <sb...@gridgain.com>
Authored: Wed Jul 5 14:24:51 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Wed Jul 5 14:24:51 2017 +0300

----------------------------------------------------------------------
 .../internal/IgniteDiagnosticMessage.java       |  4 ++-
 .../distributed/dht/GridDhtTxFinishFuture.java  | 33 +++++++++++++++++++-
 2 files changed, 35 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/58a937e5/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticMessage.java
index 075b0fe..6e6bac0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticMessage.java
@@ -413,7 +413,9 @@ public class IgniteDiagnosticMessage implements Message {
             for (IgniteInternalTx tx : ctx.cache().context().tm().activeTransactions()) {
                 if (dhtVer.equals(tx.xidVersion()) || nearVer.equals(tx.nearXidVersion())) {
                     sb.append(U.nl())
-                        .append("    [ver=").append(tx.xidVersion())
+                        .append("    ")
+                        .append(tx.getClass().getSimpleName())
+                        .append(" [ver=").append(tx.xidVersion())
                         .append(", nearVer=").append(tx.nearXidVersion())
                         .append(", topVer=").append(tx.topologyVersion())
                         .append(", state=").append(tx.state())

http://git-wip-us.apache.org/repos/asf/ignite/blob/58a937e5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
index 8a31bac..d8180b4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
@@ -26,6 +26,8 @@ import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.internal.IgniteDiagnosticAware;
+import org.apache.ignite.internal.IgniteDiagnosticPrepareContext;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.NodeStoppingException;
 import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
@@ -35,6 +37,7 @@ import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
 import org.apache.ignite.internal.processors.cache.distributed.GridDistributedTxMapping;
 import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
 import org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
 import org.apache.ignite.internal.util.future.GridFutureAdapter;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
@@ -53,7 +56,7 @@ import static org.apache.ignite.transactions.TransactionState.COMMITTING;
  *
  */
 public final class GridDhtTxFinishFuture<K, V> extends GridCacheCompoundIdentityFuture<IgniteInternalTx>
-    implements GridCacheFuture<IgniteInternalTx> {
+    implements GridCacheFuture<IgniteInternalTx>, IgniteDiagnosticAware {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -554,6 +557,34 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCacheCompoundIdentity
     }
 
     /** {@inheritDoc} */
+    @SuppressWarnings("unchecked")
+    @Override public void addDiagnosticRequest(IgniteDiagnosticPrepareContext ctx) {
+        if (!isDone()) {
+            for (IgniteInternalFuture fut : futures()) {
+                if (!fut.isDone()) {
+                    MiniFuture f = (MiniFuture)fut;
+
+                    if (!f.node().isLocal()) {
+                        GridCacheVersion dhtVer = tx.xidVersion();
+                        GridCacheVersion nearVer = tx.nearXidVersion();
+
+                        ctx.remoteTxInfo(f.node().id(), dhtVer, nearVer, "GridDhtTxFinishFuture " +
+                            "waiting for response [node=" + f.node().id() +
+                            ", topVer=" + tx.topologyVersion() +
+                            ", dhtVer=" + dhtVer +
+                            ", nearVer=" + nearVer +
+                            ", futId=" + futId +
+                            ", miniId=" + f.futId +
+                            ", tx=" + tx + ']');
+
+                        return;
+                    }
+                }
+            }
+        }
+    }
+
+    /** {@inheritDoc} */
     @Override public String toString() {
         Collection<String> futs = F.viewReadOnly(futures(), new C1<IgniteInternalFuture<?>, String>() {
             @SuppressWarnings("unchecked")


[3/4] ignite git commit: Merge remote-tracking branch 'community/ignite-2.1.2' into ignite-2.1.2

Posted by sb...@apache.org.
Merge remote-tracking branch 'community/ignite-2.1.2' into ignite-2.1.2


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0f9a895a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0f9a895a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0f9a895a

Branch: refs/heads/ignite-gg-12306-1
Commit: 0f9a895a04cd4a4f6be8e006fc2afd6f720b2215
Parents: 58a937e 301f310
Author: sboikov <sb...@gridgain.com>
Authored: Wed Jul 5 14:25:16 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Wed Jul 5 14:25:16 2017 +0300

----------------------------------------------------------------------
 .../cpp/odbc-test/src/queries_test.cpp          | 61 ++++++++++++++++++++
 modules/platforms/cpp/odbc/src/odbc.cpp         |  2 +-
 modules/platforms/cpp/odbc/src/statement.cpp    |  3 -
 3 files changed, 62 insertions(+), 4 deletions(-)
----------------------------------------------------------------------