When I first started looking into this, it seemed that it happened after the student had done something like submitting a quiz.
I pulled up on request and matched it to the corresponding entry in Canvas Data.
The one that got blanked out for that particular call was to the users user_dashboard.
However, more interesting was that about 4 seconds after that, there was a POST (includes PUT) call to /page_views/XXX where XXX is the page view ID of the page that got blanked.
id | timestamp | url | method | micros | controller | action |
9db46a00-0b66-4938-b8a1-bc949f3e4333 | 2018-09-18 13:32:50.850 | / | GET | 421121 | users | user_dashboard |
3ce68e5c-be06-4dd1-b10e-c61bfcb84ffd | 2018-09-18 13:36:48.585 | /page_views/9db46a00-0b66-4938-b8a1-bc949f3e4333 | POST | 23936 | page_views | update |
Following that the update happened from the page_views controller and the update action, I went there and found the update function, that has a comment "page view update happens in log_page_view after_action".
I didn't take time to track it down fully. The page_view_token that was supplied is mostly in the application_controller.rb file and most of it there deals with adding interaction seconds to something.
After searching for some more key parts and following some code, I ended up in app/models/page_view/pv4_client.rb. There is a section that tries to map the internal structure of a page view into the one needed for consumption. I think, without digging too much, it returns a value and then deletes it, so it maps things like sessionid into the CSV's session_id. There is a line (48) that says
pv['url'] = "#{HostUrl.protocol}://#{pv.delete('vhost')}#{pv.delete('http_request')}"
Now, the https:// is going to show up even if there is no vhost or http_request in there. The only other time vhost shows up in the code is in the spec file to go along with that and that doesn't shed light.
It appears that somewhere, something is trying to strip out the page views, but not completely getting rid of it. The protocol https:// is still there, but the host and request are removed.
I'm leaning toward Canvas updating how long someone spent doing something, but it's not getting scrubbed completely from the system in the page views through the WebUI. In Canvas Data, it's showing up.
This is with a sample size of 1. It's probably more complex than that.