You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pegasus.apache.org by GitBox <gi...@apache.org> on 2021/10/13 08:05:41 UTC

[GitHub] [incubator-pegasus] levy5307 commented on a change in pull request #825: fix: `full_scan` can't scan data completely in some occassions

levy5307 commented on a change in pull request #825:
URL: https://github.com/apache/incubator-pegasus/pull/825#discussion_r727804274



##########
File path: src/server/pegasus_server_impl.cpp
##########
@@ -942,15 +942,10 @@ void pegasus_server_impl::on_get_scanner(get_scanner_rpc rpc)
     }
 
     rocksdb::ReadOptions rd_opts(_data_cf_rd_opts);
-    if (_data_cf_opts.prefix_extractor) {
-        ::dsn::blob start_hash_key, tmp;
-        pegasus_restore_key(request.start_key, start_hash_key, tmp);
-        if (start_hash_key.size() == 0) {
-            // hash_key is not passed, only happened when do full scan (scanners got by
-            // get_unordered_scanners) on a partition, we have to do total order seek on rocksDB.
-            rd_opts.total_order_seek = true;
-            rd_opts.prefix_same_as_start = false;
-        }
+    if (_data_cf_opts.prefix_extractor && request.full_scan) {

Review comment:
       This leads to compatibility issues. For example, if old version client calls new version server(which use request.full_scan to judge whether it is full scan),  the `full_scan` will always be false in request. And full scan can't works well in this situation.

##########
File path: src/server/pegasus_server_impl.cpp
##########
@@ -942,15 +942,10 @@ void pegasus_server_impl::on_get_scanner(get_scanner_rpc rpc)
     }
 
     rocksdb::ReadOptions rd_opts(_data_cf_rd_opts);
-    if (_data_cf_opts.prefix_extractor) {
-        ::dsn::blob start_hash_key, tmp;
-        pegasus_restore_key(request.start_key, start_hash_key, tmp);
-        if (start_hash_key.size() == 0) {
-            // hash_key is not passed, only happened when do full scan (scanners got by
-            // get_unordered_scanners) on a partition, we have to do total order seek on rocksDB.
-            rd_opts.total_order_seek = true;
-            rd_opts.prefix_same_as_start = false;
-        }
+    if (_data_cf_opts.prefix_extractor && request.full_scan) {

Review comment:
       This will leads to compatibility issues. For example, if old version client calls new version server(which use request.full_scan to judge whether it is full scan),  the `full_scan` will always be false in request. And full scan can't works well in this situation.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@pegasus.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@pegasus.apache.org
For additional commands, e-mail: dev-help@pegasus.apache.org