denyeart opened a new issue #1083: GET _index does not immediately return 
indexes created with POST _index
URL: https://github.com/apache/couchdb/issues/1083
 
 
   I am using the POST and DELETE _index APIs in CouchDB 2.0.0. I realize the 
index will be built out asynchronously, but it looks like even the index 
definition is not registered synchronously.  Queries to GET _index will not 
display a created index until a couple milliseconds later (and will not remove 
a deleted index from the list until a couple milliseconds later).  These couple 
milliseconds are no big deal in most use cases, but in our case the problem 
shows up in unit tests that validate (via GET) that a created index (via POST) 
did in fact get defined in CouchDB. Also if CouchDB crashed in that time window 
we would expect the index definition would be persisted since the client 
already received a 200 ?created? result.  The problem persists even if I do a 
_ensure_full_commit after the index POST but before the index GET. I am using a 
single node CouchDB (n=1), so no cluster complications. I would have expected 
that design doc (index) creation would follow the same guarantees as regular 
doc creation, that is, the created document should be immediately queryable 
after getting a 200 ?created? result.
   
   ## Expected Behavior
   Indexes that are created via POST /{db}/_index and return a 200 "created" 
result should immediately be available in GET /{db}/_index queries.
   
   ## Current Behavior
   Index can not be retrieved via GET /{db}/_index until a few milliseconds 
after receiving 200 ?created? result.
   
   ## Possible Solution
   I would have expected that design doc (index) creation would follow the same 
guarantees as regular doc creation, that is, the created document should be 
immediately queryable after getting a 200 ?created? result.
   
   ## Steps to Reproduce (for bugs)
   2017-12-28 19:37:30.658 POST /testindexoperations/_index
   2017-12-28 19:37:30.660 POST /testindexoperations/_ensure_full_commit
   2017-12-28 19:37:30.661 GET /testindexoperations/_index/   <-- INDEX NOT IN 
LIST
   2017-12-28 19:37:30.662 GET /testindexoperations/_index/  <-- INDEX NOT IN 
LIST
   2017-12-28 19:37:30.664 GET /testindexoperations/_index/  <-- INDEX IN LIST
   
   ## Context
   In our case the problem shows up in unit tests that validate (via GET) that 
a created index (via POST) did in fact get defined in CouchDB.
   In the real world, if CouchDB crashed in that time window we would expect 
the index definition would be persisted since the client already received a 200 
?created? result. 
   
   ## Your Environment
   * Version used: 2.0.0
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to