Skip to content

Commit 04bfd3b

Browse files
committed
remove todo
1 parent bec8480 commit 04bfd3b

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

webknossos-datastore/app/com/scalableminds/webknossos/datastore/controllers/WKDatasetController.scala

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import com.scalableminds.util.accesscontext.TokenContext
55
import com.scalableminds.util.geometry.Vec3Int
66
import com.scalableminds.util.image.{Color, JPEGWriter}
77
import com.scalableminds.util.objectid.ObjectId
8+
import com.scalableminds.util.time.Instant
89
import com.scalableminds.util.tools.Fox
9-
import com.scalableminds.webknossos.datastore.DataStoreConfig
1010
import com.scalableminds.webknossos.datastore.helpers.MissingBucketHeaders
1111
import com.scalableminds.webknossos.datastore.image.{ImageCreator, ImageCreatorParameters}
1212
import com.scalableminds.webknossos.datastore.models.DataRequestCollection._
@@ -21,21 +21,19 @@ import com.scalableminds.webknossos.datastore.models.datasource.{Category, DataL
2121
import com.scalableminds.webknossos.datastore.services.{
2222
BinaryDataService,
2323
BinaryDataServiceHolder,
24-
DataSourceRepository,
2524
DataStoreAccessTokenService,
2625
DatasetCache,
2726
FindDataService,
28-
MappingService,
2927
UserAccessRequest
3028
}
31-
import com.scalableminds.webknossos.datastore.services.mesh.AdHocMeshServiceHolder
3229
import com.scalableminds.webknossos.datastore.slacknotification.DSSlackNotificationService
3330
import play.api.i18n.Messages
3431
import play.api.libs.json.Json
3532
import play.api.mvc.{Action, AnyContent, PlayBodyParsers, RawBuffer}
3633

3734
import java.io.ByteArrayOutputStream
3835
import scala.concurrent.ExecutionContext
36+
import scala.concurrent.duration.DurationInt
3937

4038
/**
4139
* This is equivalent to the BinaryDataController for Datasets by DatasetId
@@ -44,6 +42,7 @@ class WKDatasetController @Inject()(
4442
accessTokenService: DataStoreAccessTokenService,
4543
binaryDataServiceHolder: BinaryDataServiceHolder,
4644
findDataService: FindDataService,
45+
slackNotificationService: DSSlackNotificationService,
4746
datasetCache: DatasetCache
4847
)(implicit ec: ExecutionContext, bodyParsers: PlayBodyParsers)
4948
extends Controller
@@ -54,13 +53,22 @@ class WKDatasetController @Inject()(
5453
def requestViaWebknossos(datasetId: String, dataLayerName: String): Action[List[WebknossosDataRequest]] =
5554
Action.async(validateJson[List[WebknossosDataRequest]]) { implicit request =>
5655
accessTokenService.validateAccessFromTokenContext(UserAccessRequest.readDataset(datasetId)) {
57-
// TODO Log time
58-
for {
59-
datasetId <- ObjectId.fromString(datasetId)
60-
dataSource <- datasetCache.getById(datasetId)
61-
dataLayer <- dataSource.getDataLayer(dataLayerName).toFox ?~> "Data layer not found" ~> NOT_FOUND
62-
(data, indices) <- requestData(dataSource.id, dataLayer, request.body)
63-
} yield Ok(data).withHeaders(createMissingBucketsHeaders(indices): _*)
56+
logTime(slackNotificationService.noticeSlowRequest) {
57+
val t = Instant.now
58+
for {
59+
datasetId <- ObjectId.fromString(datasetId)
60+
dataSource <- datasetCache.getById(datasetId)
61+
dataLayer <- dataSource.getDataLayer(dataLayerName).toFox ?~> "Data layer not found" ~> NOT_FOUND
62+
(data, indices) <- requestData(dataSource.id, dataLayer, request.body)
63+
duration = Instant.since(t)
64+
_ = if (duration > (10 seconds))
65+
logger.info(
66+
s"Complete data request for $datasetId/$dataLayerName took ${formatDuration(duration)}."
67+
+ request.body.headOption
68+
.map(firstReq => s" First of ${request.body.size} requests was $firstReq")
69+
.getOrElse(""))
70+
} yield Ok(data).withHeaders(createMissingBucketsHeaders(indices): _*)
71+
}
6472
}
6573
}
6674

0 commit comments

Comments
 (0)