2016-06-09 10 views
1

Ich bin neu bei couchbase. Ich habe meinen eigenen Bucket erstellt, der nicht passwortgeschützt ist. Ich möchte eine Auswahlabfrage durchführen. Dafür habe ich N1Qlquery benutzt. Ich benutze sdk2.2.6 von couchbase. Wenn ich es abfrage, kann es sich mit dem Bucket verbinden, aber nicht abfragen können. Bitte helfen Sie.Ich bekomme einen Timeout-Fehler, wenn ich versuche, einen Eimer nach dem Öffnen in Couchbase

ist hier mein Code

Bucket bucket=CouchbaseUtils.getBucketConnection("ProductLocation"); 
    N1qlQueryResult queryResult; 
    Gson gson=new Gson(); 

    List<Products> productsList=new ArrayList<Products>(); 
     try{ 
      queryResult=bucket.query(N1qlQuery.simple("SELECT * FROM "+bucket.name()+" where Location='"+location+"'")); 
      //queryResult=bucket.query(N1qlQuery.simple("SELECT * FROM "+bucket.name())); 

     }catch(Exception e){ 
      System.out.println("The product which you are looking for is not present in that location"); 
      e.printStackTrace(); 
      return null; 
     } 

     Iterator<N1qlQueryRow> iterator=queryResult.allRows().iterator(); 
     while(iterator.hasNext()){ 
      productsList.add(new Gson().fromJson(CouchbaseUtils.stringToMap(iterator.next().toString()), Products.class)); 
     } 
     return productsList; 

ist hier der Ausgang

INFO: CouchbaseEnvironment: {sslEnabled=false, sslKeystoreFile='null', sslKeystorePassword='null', queryEnabled=true, queryPort=8093, bootstrapHttpEnabled=true, bootstrapCarrierEnabled=true, bootstrapHttpDirectPort=8091, bootstrapHttpSslPort=18091, bootstrapCarrierDirectPort=11210, bootstrapCarrierSslPort=11207, ioPoolSize=4, computationPoolSize=4, responseBufferSize=16384, requestBufferSize=16384, kvServiceEndpoints=1, viewServiceEndpoints=1, queryServiceEndpoints=1, searchServiceEndpoints=1, ioPool=NioEventLoopGroup, coreScheduler=CoreScheduler, eventBus=DefaultEventBus, packageNameAndVersion=couchbase-java-client/${project.version} (git: ${git.commit.id.describe}, core: ${git.commit.id.describe}), dcpEnabled=false, retryStrategy=BestEffort, maxRequestLifetime=75000, retryDelay=ExponentialDelay{growBy 1.0 MICROSECONDS, powers of 2; lower=100, upper=100000}, reconnectDelay=ExponentialDelay{growBy 1.0 MILLISECONDS, powers of 2; lower=32, upper=4096}, observeIntervalDelay=ExponentialDelay{growBy 1.0 MICROSECONDS, powers of 2; lower=10, upper=100000}, keepAliveInterval=30000, autoreleaseAfter=2000, bufferPoolingEnabled=true, tcpNodelayEnabled=true, mutationTokensEnabled=false, socketConnectTimeout=1000, dcpConnectionBufferSize=20971520, dcpConnectionBufferAckThreshold=0.2, dcpConnectionName=dcp/core-io, callbacksOnIoPool=false, queryTimeout=75000, viewTimeout=75000, kvTimeout=2500, connectTimeout=10000, disconnectTimeout=25000, dnsSrvEnabled=false} 
    Jun 09, 2016 11:30:53 AM com.couchbase.client.core.node.CouchbaseNode signalConnected 
    INFO: Connected to Node localhost 
    Jun 09, 2016 11:30:54 AM com.couchbase.client.core.config.DefaultConfigurationProvider$8 call 
    INFO: Opened bucket ProductLocation 
    java.lang.RuntimeException: java.util.concurrent.TimeoutException 
    at com.couchbase.client.java.util.Blocking.blockForSingle(Blocking.java:75) 
    at com.couchbase.client.java.CouchbaseBucket.query(CouchbaseBucket.java:656) 
    at com.couchbase.client.java.CouchbaseBucket.query(CouchbaseBucket.java:582) 
    at com.tesco.productandlocation.daoImpl.ProductLocationDaoImpl.getProductByProductId(ProductLocationDaoImpl.java:50) 
    at TestMain.main(TestMain.java:29) 

Hier wird der Code für productId von Produkten zu finden

`List<Products> productsList=new ArrayList<Products>(); 
    try{ 
     queryResult=bucket.query(N1qlQuery.simple("SELECT * FROM "+bucket.name()+" where productid="+productid+"")); 
    }catch(Exception e){ 
     System.out.println("No product with that particular Id exists"); 
     e.printStackTrace(); 
     return null; 
    } 

    Iterator<N1qlQueryRow> iterator=queryResult.allRows().iterator(); 
    while(iterator.hasNext()){ 
     productsList.add(new Gson().fromJson(CouchbaseUtils.stringToMap(iterator.next().toString()), Products.class)); 
    } 
    ` 
+0

das Timeout passiert, wenn 'ProductLocationDaoImpl.getProductByProductId' ausführt. aus dem Namen der Methode, die nicht so klingt, ist der Code, den Sie geteilt haben ... können Sie getProductByProductId's Code teilen? –

+0

'ProductLocationDaoImpl.getProductByProductId' wird mit dem gemeinsamen Code implementiert. –

Antwort

1

können Sie versuchen, die zu verengen Problem.

Können Sie die Abfrage von CBQ oder Web-Konsole ausführen?

  • können Sie eine andere Abfrage ausführen?
  • Wenn Sie andere Konnektivität/Timeouts überprüft haben, überprüfen Sie die Dateien query.log und indexer.log auf Fehler/Warnungen.
  • bieten weitere Details auf Ihrem Client/Server-Setup und Couchbase-Version. -

-Prasad