diff --git a/jstests/sharding/timeseries_drop.js b/jstests/sharding/timeseries_drop.js
index 4d3fdea9da6..1781c9aed08 100644
--- a/jstests/sharding/timeseries_drop.js
+++ b/jstests/sharding/timeseries_drop.js
@@ -11,6 +11,8 @@
 "use strict";
 
 load("jstests/core/timeseries/libs/timeseries.js");  // For 'TimeseriesTest' helpers.
+load("jstests/libs/fail_point_util.js");
+load("jstests/libs/parallel_shell_helpers.js");
 
 Random.setRandomSeed();
 
@@ -21,24 +23,10 @@ const metaField = 'hostid';
 
 // Connections.
 const st = new ShardingTest({shards: 2, rs: {nodes: 2}});
-const mongos = st.s0;
-
-// Sanity checks.
-if (!TimeseriesTest.timeseriesCollectionsEnabled(st.shard0)) {
-    jsTestLog("Skipping test because the time-series collection feature flag is disabled");
-    st.stop();
-    return;
-}
-
-if (!TimeseriesTest.shardedtimeseriesCollectionsEnabled(st.shard0)) {
-    jsTestLog("Skipping test because the sharded time-series collection feature flag is disabled");
-    st.stop();
-    return;
-}
 
 // Databases.
-const mainDB = mongos.getDB(dbName);
-const configDB = mongos.getDB('config');
+const mainDB = st.s.getDB(dbName);
+const configDB = st.s.getDB('config');
 
 // Helpers.
 let currentId = 0;
@@ -62,93 +50,63 @@ function ensureCollectionDoesNotExist(collName) {
     }
 }
 
-function runTest(getShardKey, performChunkSplit) {
+function runTest(getShardKey) {
     mainDB.dropDatabase();
 
-    assert.commandWorked(mongos.adminCommand({enableSharding: dbName}));
+    assert.commandWorked(
+        st.s.adminCommand({enableSharding: dbName, primaryShard: st.shard0.shardName}));
 
     // Create timeseries collection.
     assert.commandWorked(mainDB.createCollection(
         collName, {timeseries: {timeField: timeField, metaField: metaField}}));
+
     const coll = mainDB.getCollection(collName);
 
     // Shard timeseries collection.
     const shardKey = getShardKey(1, 1);
     assert.commandWorked(coll.createIndex(shardKey));
-    assert.commandWorked(mongos.adminCommand({
-        shardCollection: `${dbName}.${collName}`,
-        key: shardKey,
-    }));
 
     // Insert initial set of documents.
     const numDocs = 8;
     const firstBatch = generateBatch(numDocs);
     assert.commandWorked(coll.insert(firstBatch));
 
-    if (performChunkSplit) {
-        // Manually split the data into two chunks.
-        const splitIndex = numDocs / 2;
-        const splitPoint = {};
-        if (shardKey.hasOwnProperty(metaField)) {
-            splitPoint.meta = firstBatch[splitIndex][metaField];
-        }
-        if (shardKey.hasOwnProperty(timeField)) {
-            splitPoint[`control.min.${timeField}`] = firstBatch[splitIndex][timeField];
-        }
-
-        assert.commandWorked(mongos.adminCommand(
-            {split: `${dbName}.system.buckets.${collName}`, middle: splitPoint}));
-
-        // Ensure that currently both chunks reside on the primary shard.
-        let counts = st.chunkCounts(`system.buckets.${collName}`, dbName);
-        const primaryShard = st.getPrimaryShard(dbName);
-        assert.eq(2, counts[primaryShard.shardName], counts);
-
-        // Move one of the chunks into the second shard.
-        const otherShard = st.getOther(primaryShard);
-        assert.commandWorked(mongos.adminCommand({
-            movechunk: `${dbName}.system.buckets.${collName}`,
-            find: splitPoint,
-            to: otherShard.name,
-            _waitForDelete: true
-        }));
-
-        // Ensure that each shard owns one chunk.
-        counts = st.chunkCounts(`system.buckets.${collName}`, dbName);
-        assert.eq(1, counts[primaryShard.shardName], counts);
-        assert.eq(1, counts[otherShard.shardName], counts);
-    }
+    let dropCollFp = configureFailPoint(st.shard0, "hangDropCollectionAfterCatalogLookup");
+    // let shardCollFp = configureFailPoint(st.shard0, "hangShardCollectionAfterCatalogLookup");
+
+    let dropSh = startParallelShell(funWithArgs((dbName, collName) => {
+                                        db.getSiblingDB(dbName)[collName].drop();
+                                    }, dbName, collName), st.s.port);
+
+    dropCollFp.wait();
+
+    jsTest.log("XOXO starting shard collection");
+    assert.commandWorked(
+        st.s.adminCommand({shardCollection: `${dbName}.${collName}`, key: shardKey}));
 
-    // Drop the time-series collection.
-    assert(coll.drop());
+    jsTest.log("XOXO Completed shard collection");
+
+    dropCollFp.off();
+
+    dropSh();
 
     // Ensure that both time-series view and time-series buckets collections do not exist according
     // to mongos and both shards.
     ensureCollectionDoesNotExist(collName);
     ensureCollectionDoesNotExist(`system.buckets.${collName}`);
 
+    assert.eq(0, coll.countDocuments({}));
+
     // Ensure that the time-series buckets collection gets deleted from the config database as well.
     assert.eq([],
               configDB.collections.find({_id: `${dbName}.system.buckets.${collName}`}).toArray());
 }
 
 try {
-    for (let performChunkSplit of [false, true]) {
-        function metaShardKey(meta, _) {
-            return {[metaField]: meta};
-        }
-        runTest(metaShardKey, performChunkSplit);
-
-        function timeShardKey(_, time) {
-            return {[timeField]: time};
-        }
-        runTest(timeShardKey, performChunkSplit);
-
-        function timeAndMetaShardKey(meta, time) {
-            return {[metaField]: meta, [timeField]: time};
-        }
-        runTest(timeAndMetaShardKey, performChunkSplit);
+    function metaShardKey(meta, _) {
+        return {[metaField]: meta};
     }
+    runTest(metaShardKey);
 } finally {
     st.stop();
 }
diff --git a/src/mongo/db/s/shardsvr_drop_collection_command.cpp b/src/mongo/db/s/shardsvr_drop_collection_command.cpp
index 7602a32faea..54fa40c5901 100644
--- a/src/mongo/db/s/shardsvr_drop_collection_command.cpp
+++ b/src/mongo/db/s/shardsvr_drop_collection_command.cpp
@@ -45,8 +45,12 @@
 #include "mongo/s/chunk_manager_targeter.h"
 #include "mongo/s/grid.h"
 #include "mongo/s/request_types/sharded_ddl_commands_gen.h"
+#include "mongo/util/fail_point.h"
 
 namespace mongo {
+
+MONGO_FAIL_POINT_DEFINE(hangDropCollectionAfterCatalogLookup);
+
 namespace {
 
 class ShardsvrDropCollectionCommand final : public TypedCommand<ShardsvrDropCollectionCommand> {
@@ -119,11 +123,14 @@ public:
             const auto targeter = ChunkManagerTargeter(opCtx, ns());
             const auto targetNs = targeter.getNS();
 
+            hangDropCollectionAfterCatalogLookup.pauseWhileSet();
+
             // Since this operation is not directly writing locally we need to force its db
             // profile level increase in order to be logged in "<db>.system.profile"
             CurOp::get(opCtx)->raiseDbProfileLevel(
                 CollectionCatalog::get(opCtx)->getDatabaseProfileLevel(targetNs.db()));
 
+
             auto coordinatorDoc = DropCollectionCoordinatorDocument();
             coordinatorDoc.setShardingDDLCoordinatorMetadata(
                 {{targetNs, DDLCoordinatorTypeEnum::kDropCollection}});
