代码之家  ›  专栏  ›  技术社区  ›  Dawid Fieluba

创建失败后couchbase打开bucket

  •  0
  • Dawid Fieluba  · 技术社区  · 8 年前

    我正在创建一些python脚本来自动测试一些couchbase操作。

    执行此代码时出现意外情况:

     for i in range(0, BUCKETS_AMOUNT): # BUCKETS_AMOUNT = 4
            bucket_name = '%s%s' % (BUCKET_NAME_PREFIX, i) # BUCKET_NAME_PREFIX = 'test_bck_'
            print('Creating bucket: %s' % bucket_name)
            admin.bucket_create(bucket_name, ram_quota=512, replicas=1)
    
            print('Opening bucket: %s' % bucket_name)
            bucket = cluster.open_bucket(bucket_name)
            print('Bucket: %s' % bucket)
            inserted_data[bucket_name] = _fill_bucket(bucket)
    

    <Key='/pools/default/buckets/test_bck_1', RC=0x3B[HTTP Operation failed. Inspect status code for details], HTTP Request failed. Examine 'objextra' for full result, Results=1, C Source=(src/http.c,144), OBJ=HttpResult<rc=0x0, value=b'Requested resource not found.\r\n', http_status=404, url=/pools/default/buckets/test_bck_1, tracing_context=0, tracing_output=None>, Tracing Output={"/pools/default/buckets/test_bck_1": null}>
    Creating bucket: test_bck_0
    Opening bucket: test_bck_0
    E
    ======================================================================
    ERROR: test_backup (__main__.TestBackup)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "couchbase_backup_test.py", line 29, in test_backup
        expected = create_and_fill_test_buckets(self.cluster, self.admin)
      File "/u01/app/couchbase/bucket_data_util.py", line 41, in create_and_fill_test_buckets
        bucket = cluster.open_bucket(bucket_name)
      File "/u01/app/couchbase/env_cb/lib/python3.6/site-packages/couchbase/cluster.py", line 144, in open_bucket
        rv = self.bucket_class(str(connstr), **kwargs)
      File "/u01/app/couchbase/env_cb/lib/python3.6/site-packages/couchbase/bucket.py", line 273, in __init__
        self._do_ctor_connect()
      File "/u01/app/couchbase/env_cb/lib/python3.6/site-packages/couchbase/bucket.py", line 282, in _do_ctor_connect
        self._connect()
    couchbase.exceptions._ProtocolError_0x16 (generated, catch ProtocolError): <RC=0x16[Data received on socket was not in the expected format], There was a problem while trying to send/receive your request over the network. This may be a result of a bad network or a misconfigured client or server, C Source=(src/bucket.c,1066)>
    
    ----------------------------------------------------------------------
    

    在这个示例bucket中 test_bck_0 被创建并填充,但它似乎试图打开 test_bck_1 在创建它之前。 当我远程执行这段代码时,一切都很好地工作。但我需要从实际节点本地运行这个。 有轻微的版本差异,但我没有可能将其对齐。

    CouchBase服务器版本: 五点一

    它可以从以下位置远程工作:

    • 操作系统: Windows 7 x64
    • 蟒蛇: 小精灵
    • 库基: 2.3.5

    不适用于:

    • 操作系统: 红帽企业7.5
    • 蟒蛇: 3.3.3
    • 库基: 2.4.0
    2 回复  |  直到 8 年前
        1
  •  1
  •   avsej    8 年前

    另外,问题是创建bucket是一个异步操作,因此在发出create bucket请求和打开bucket之间需要延迟。

    在创建和打开bucket之间添加类似的内容将有助于:

    import time
    time.sleep(5);
    

    在对远程集群运行脚本时,您可能没有看到这种情况,因为它很可能是一个具有更多资源(CPU/RAM)的专用集群,加上网络延迟会增加一点。

        2
  •  -1
  •   avsej    8 年前

    你可以用 couchbase-cli bucket-create 创建bucket和比sdk api公开的更多操作。