MINOR: Handle missing user on Web Analytics (#17546)

* Handle missing user on Web Analytics. Changed Daily Active Users to epoch timestamp

* Rollback epoch timestamp changes
This commit is contained in:
IceS2 2024-08-22 12:34:28 +02:00 committed by GitHub
parent 588535f36e
commit cb8a8a8b81
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -12,11 +12,13 @@ import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
import org.glassfish.jersey.internal.util.ExceptionUtils;
import org.openmetadata.schema.analytics.WebAnalyticEventData;
import org.openmetadata.schema.entity.teams.User;
import org.openmetadata.schema.system.IndexingError;
import org.openmetadata.schema.system.StepStats;
import org.openmetadata.schema.type.Include;
import org.openmetadata.service.Entity;
import org.openmetadata.service.apps.bundles.insights.workflows.webAnalytics.WebAnalyticsWorkflow;
import org.openmetadata.service.exception.EntityNotFoundException;
import org.openmetadata.service.exception.SearchIndexException;
import org.openmetadata.service.util.EntityUtil;
import org.openmetadata.service.util.JsonUtils;
@ -75,18 +77,29 @@ public class WebAnalyticsUserActivityProcessor
if (!userActivityDataMap.containsKey(userId)) {
// Fetch user Info
var userDetails =
Entity.getEntityRepository(Entity.USER)
.get(null, userId, new EntityUtil.Fields(Set.of("teams")), Include.ALL, false);
try {
User userDetails =
(User)
Entity.getEntityRepository(Entity.USER)
.get(null, userId, new EntityUtil.Fields(Set.of("teams")), Include.ALL, false);
Map<UUID, List<Long>> sessions = new HashMap<>();
sessions.put(sessionId, List.of(timestamp));
Map<UUID, List<Long>> sessions = new HashMap<>();
sessions.put(sessionId, List.of(timestamp));
WebAnalyticsWorkflow.UserActivityData userActivityData =
new WebAnalyticsWorkflow.UserActivityData(
userDetails.getName(), userId, null, sessions, 1, 1, timestamp);
// .withTeam(userDetails.)
userActivityDataMap.put(userId, userActivityData);
String team = null;
if (!userDetails.getTeams().isEmpty()) {
team = userDetails.getTeams().get(0).getName();
}
WebAnalyticsWorkflow.UserActivityData userActivityData =
new WebAnalyticsWorkflow.UserActivityData(
userDetails.getName(), userId, team, sessions, 1, 1, timestamp);
userActivityDataMap.put(userId, userActivityData);
} catch (EntityNotFoundException ex) {
LOG.debug(
String.format(
"Skipping user with id '%s' because it was not found in the database.", userId));
}
} else {
WebAnalyticsWorkflow.UserActivityData userActivityData = userActivityDataMap.get(userId);
Map<UUID, List<Long>> sessions = userActivityData.sessions();