Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-12137

ODBC: Application hang when connecting to a starting single node

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • 2.7.5
    • 2.8
    • odbc
    • None
    • Windows 7

    • Docs Required, Release Notes Required

    Description

      If I repeatedly try to connect with ODBC before starting only one node, it will at one time connect but the first query causes my application to hang.
      After reading that ODBC driver is not thread safe, I make sure to issue statement on one thread at a time and the behaviour is still the same.

      console output:

      D:\apache-ignite-2.7.5-bin\platforms\dotnet\bin>Apache.Ignite.exe
      Sep 03, 2019 9:32:21 AM org.springframework.beans.factory.xml.XmlBeanDefinitionR
      eader loadBeanDefinitions
      INFO: Loading XML bean definitions from URL [file:/D:/apache-ignite-2.7.5-bin/co
      nfig/default-config.xml]
      Sep 03, 2019 9:32:21 AM org.springframework.context.support.AbstractApplicationC
      ontext prepareRefresh
      INFO: Refreshing org.springframework.context.support.GenericApplicationContext@2
      7082746: startup date [Tue Sep 03 09:32:21 CEST 2019]; root of context hierarchy

      [09:32:22] __________ ________________
      [09:32:22] / / ___/ |/ / _/ __/ __/
      [09:32:22] _/ // (7 7 // / / / / _/
      [09:32:22] /__/_//|/_/ // /___/
      [09:32:22]
      [09:32:22] ver. 2.7.5#20190603-sha1:be4f2a15
      [09:32:22] 2018 Copyright(C) Apache Software Foundation
      [09:32:22]
      [09:32:22] Ignite documentation: http://ignite.apache.org
      [09:32:22]
      [09:32:22] Quiet mode.
      [09:32:22] ^-- Logging to file 'D:\apache-ignite-2.7.5-bin\work\log\ignite-413
      535b7.0.log'
      [09:32:22] ^-- Logging by 'JavaLogger [quiet=true, config=null]'
      [09:32:22] ^-- To see *FULL* console log here add DIGNITE_QUIET=false or "
      v" to ignite.{sh|bat}
      [09:32:22]
      [09:32:22] OS: Windows 7 6.1 amd64
      [09:32:22] VM information: Java(TM) SE Runtime Environment 1.8.0_191-b12 Oracle
      Corporation Java HotSpot(TM) 64-Bit Server VM 25.191-b12
      [09:32:22] Please set system property '-Djava.net.preferIPv4Stack=true' to avoid
      possible problems in mixed environments.
      [09:32:22] Initial heap size is 192MB (should be no less than 512MB, use -Xms512
      m -Xmx512m).
      [09:32:22] Configured plugins:
      [09:32:22] ^-- None
      [09:32:22]
      [09:32:22] Configured failure handler: [hnd=StopNodeOrHaltFailureHandler [trySto
      p=false, timeout=0, super=AbstractFailureHandler [ignoredFailureTypes=[SYSTEM_WO
      RKER_BLOCKED, SYSTEM_CRITICAL_OPERATION_TIMEOUT]]]]
      [09:32:23] Message queue limit is set to 0 which may lead to potential OOMEs whe
      n running cache operations in FULL_ASYNC or PRIMARY_SYNC modes due to message qu
      eues growth on sender and receiver sides.
      [09:32:23] Security status [authentication=off, tls/ssl=off]
      [09:32:25,782][SEVERE]client-connector-#41[ClientListenerProcessor] Runtime er
      ror caught during grid runnable execution: GridWorker [name=message-received-not
      ify, igniteInstanceName=null, finished=false, heartbeatTs=1567495945774, hashCod
      e=215381183, interrupted=false, runner=client-connector-#41]
      java.lang.NullPointerException
      at org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.
      nextConnectionId(ClientListenerNioListener.java:306)
      at org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.
      prepareContext(ClientListenerNioListener.java:285)
      at org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.
      onHandshake(ClientListenerNioListener.java:223)
      at org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.
      onMessage(ClientListenerNioListener.java:129)
      at org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.
      onMessage(ClientListenerNioListener.java:45)
      at org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onM
      essageReceived(GridNioFilterChain.java:279)
      at org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessa
      geReceived(GridNioFilterAdapter.java:109)
      at org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(G
      ridNioAsyncNotifyFilter.java:97)
      at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java
      :120)
      at org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorke
      rPool.java:70)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
      java:1149)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
      .java:624)
      at java.lang.Thread.run(Thread.java:748)
      [09:32:37,140][SEVERE]exchange-worker-#48[GridCachePartitionExchangeManager] F
      ailed to process custom exchange task: ClientCacheChangeDummyDiscoveryMessage [r
      eqId=435a4891-cdd1-47a0-8d3b-5e5978392cf8, cachesToClose=null, startCaches=[Orga
      nization]]
      java.lang.NullPointerException
      at org.apache.ignite.internal.processors.cache.CacheAffinitySharedManage
      r.processClientCachesChanges(CacheAffinitySharedManager.java:635)
      at org.apache.ignite.internal.processors.cache.GridCacheProcessor.proces
      sCustomExchangeTask(GridCacheProcessor.java:391)
      at org.apache.ignite.internal.processors.cache.GridCachePartitionExchang
      eManager$ExchangeWorker.processCustomTask(GridCachePartitionExchangeManager.java
      :2476)
      at org.apache.ignite.internal.processors.cache.GridCachePartitionExchang
      eManager$ExchangeWorker.body0(GridCachePartitionExchangeManager.java:2621)
      at org.apache.ignite.internal.processors.cache.GridCachePartitionExchang
      eManager$ExchangeWorker.body(GridCachePartitionExchangeManager.java:2540)
      at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java
      :120)
      at java.lang.Thread.run(Thread.java:748)
      [09:32:37] Performance suggestions for grid (fix if possible)
      [09:32:37] To disable, set -DIGNITE_PERFORMANCE_SUGGESTIONS_DISABLED=true
      [09:32:37] ^-- Enable G1 Garbage Collector (add '-XX:+UseG1GC' to JVM options)

      [09:32:37] ^-- Specify JVM heap max size (add '-Xmx<size>[g|G|m|M|k|K]' to JVM
      options)
      [09:32:37] ^-- Set max direct memory size if getting 'OOME: Direct buffer memo
      ry' (add '-XX:MaxDirectMemorySize=<size>[g|G|m|M|k|K]' to JVM options)
      [09:32:37] ^-- Disable processing of calls to System.gc() (add '-XX:+DisableEx
      plicitGC' to JVM options)
      [09:32:37] ^-- Enable ATOMIC mode if not using transactions (set 'atomicityMod
      e' to ATOMIC)
      [09:32:37] ^-- Disable fully synchronous writes (set 'writeSynchronizationMode
      ' to PRIMARY_SYNC or FULL_ASYNC)
      [09:32:37] Refer to this page for more performance suggestions: https://apacheig
      nite.readme.io/docs/jvm-and-system-tuning
      [09:32:37]
      [09:32:37] To start Console Management & Monitoring run ignitevisorcmd.{sh|bat}
      [09:32:37] Data Regions Configured:
      [09:32:37] ^-- default [initSize=256.0 MiB, maxSize=2.4 GiB, persistence=false
      ]
      [09:32:37]
      [09:32:37] Ignite node started OK (id=413535b7)
      [09:32:37] Topology snapshot [ver=1, locNode=413535b7, servers=1, clients=0, sta
      te=ACTIVE, CPUs=4, offheap=2.4GB, heap=2.6GB]

      Windbg output:

      0:000> k
      ChildEBP RetAddr
      WARNING: Stack unwind information not available. Following frames may be wrong.
      0018e758 74cc6d20 ntdll!NtWaitForSingleObject+0x15
      0018e844 7575673e mswsock+0x6d20
      0018e8c4 59ad5a3a WS2_32!select+0x9f
      0018e9fc 59ad5018 ignite_odbc!ignite::odbc::system::TcpSocketClient::WaitOnSocket+0x5a [d:\apache-ignite-2.7.5-bin\platforms\cpp\odbc\os\win\src\system\tcp_socket_client.cpp @ 434]
      0018ea14 59aeff41 ignite_odbc!ignite::odbc::system::TcpSocketClient::Receive+0x18 [d:\apache-ignite-2.7.5-bin\platforms\cpp\odbc\os\win\src\system\tcp_socket_client.cpp @ 256]
      0018eae0 59aefdb0 ignite_odbc!ignite::odbc::Connection::ReceiveAll+0x61 [d:\apache-ignite-2.7.5-bin\platforms\cpp\odbc\src\connection.cpp @ 354]
      0018eb90 59af1c14 ignite_odbc!ignite::odbc::Connection::Receive+0xb0 [d:\apache-ignite-2.7.5-bin\platforms\cpp\odbc\src\connection.cpp @ 311]
      0018ebcc 59b045a5 ignite_odbc!ignite::odbc::Connection::SyncMessage<ignite::odbc::QueryExecuteRequest,ignite::odbc::QueryExecuteResponse>+0x94 [d:\apache-ignite-2.7.5-bin\platforms\cpp\odbc\include\ignite\odbc\connection.h @ 219]
      0018ed64 59b03fa4 ignite_odbc!ignite::odbc::query::DataQuery::MakeRequestExecute+0x105 [d:\apache-ignite-2.7.5-bin\platforms\cpp\odbc\src\query\data_query.cpp @ 230]
      0018ed70 59b149ce ignite_odbc!ignite::odbc::query::DataQuery::Execute+0x14 [d:\apache-ignite-2.7.5-bin\platforms\cpp\odbc\src\query\data_query.cpp @ 58]
      0018edc8 59b146f5 ignite_odbc!ignite::odbc::Statement::InternalExecuteSqlQuery+0x21e [d:\apache-ignite-2.7.5-bin\platforms\cpp\odbc\src\statement.cpp @ 705]
      0018ede4 59afc83f ignite_odbc!ignite::odbc::Statement::ExecuteSqlQuery+0x75 [d:\apache-ignite-2.7.5-bin\platforms\cpp\odbc\src\statement.cpp @ 635]
      0018ef5c 59af5743 ignite_odbc!ignite::SQLExecDirect+0x1ef [d:\apache-ignite-2.7.5-bin\platforms\cpp\odbc\src\odbc.cpp @ 399]
      0018ef6c 696ae3a4 ignite_odbc!SQLExecDirect+0x13 [d:\apache-ignite-2.7.5-bin\platforms\cpp\odbc\src\entry_points.cpp @ 121]
      0018ef90 6969e3dc ODBC32!SQLSetEnvAttr+0xa614
      0018efb8 005123e0 ODBC32!SQLExecDirectA+0xa1

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              toninlg AH
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: