From 56609ec7b422bd5f879cdf045e4612c0bbf0bad3 Mon Sep 17 00:00:00 2001 From: Oren Ben-Meir Date: Wed, 12 Nov 2025 12:04:50 -0500 Subject: [PATCH] Remove deprecated module hibernate-3.3 --- instrumentation/hibernate-3.3/build.gradle | 18 --- .../hibernate33/StatisticsSampler.java | 114 -------------- .../hibernate/impl/SessionFactoryImpl.java | 31 ---- .../java/org/hibernate/impl/SessionImpl.java | 149 ------------------ settings.gradle | 1 - 5 files changed, 313 deletions(-) delete mode 100644 instrumentation/hibernate-3.3/build.gradle delete mode 100644 instrumentation/hibernate-3.3/src/main/java/com/newrelic/weave/instrumentation/hibernate33/StatisticsSampler.java delete mode 100644 instrumentation/hibernate-3.3/src/main/java/org/hibernate/impl/SessionFactoryImpl.java delete mode 100644 instrumentation/hibernate-3.3/src/main/java/org/hibernate/impl/SessionImpl.java diff --git a/instrumentation/hibernate-3.3/build.gradle b/instrumentation/hibernate-3.3/build.gradle deleted file mode 100644 index f9d14fbaa1..0000000000 --- a/instrumentation/hibernate-3.3/build.gradle +++ /dev/null @@ -1,18 +0,0 @@ -dependencies { - implementation(project(":agent-bridge")) - - implementation("org.hibernate:hibernate-jmx:3.3.0.SP1") -} - -jar { - manifest { attributes 'Implementation-Title': 'com.newrelic.instrumentation.hibernate-3.3' } -} - -verifyInstrumentation { - passesOnly 'org.hibernate:hibernate-jmx:[3.3.0.CR1,3.5)' -} - -site { - title 'Hibernate' - type 'Framework' -} diff --git a/instrumentation/hibernate-3.3/src/main/java/com/newrelic/weave/instrumentation/hibernate33/StatisticsSampler.java b/instrumentation/hibernate-3.3/src/main/java/com/newrelic/weave/instrumentation/hibernate33/StatisticsSampler.java deleted file mode 100644 index 1c46968a4c..0000000000 --- a/instrumentation/hibernate-3.3/src/main/java/com/newrelic/weave/instrumentation/hibernate33/StatisticsSampler.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * - * * Copyright 2020 New Relic Corporation. All rights reserved. - * * SPDX-License-Identifier: Apache-2.0 - * - */ - -package com.newrelic.weave.instrumentation.hibernate33; - -import com.newrelic.agent.bridge.AgentBridge; -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.weaver.Weaver; -import org.hibernate.SessionFactory; -import org.hibernate.jmx.StatisticsService; -import org.hibernate.stat.EntityStatistics; -import org.hibernate.stat.SecondLevelCacheStatistics; - -import java.text.MessageFormat; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import java.util.logging.Level; - -public class StatisticsSampler implements Runnable { - - private static final String HIBERNATE_STATISTICS = "HibernateStatistics"; - private static final String ENTITIES = HIBERNATE_STATISTICS + "/Entity"; - private static final String SECOND_LEVEL_CACHE = HIBERNATE_STATISTICS + "/SecondLevelCache"; - - private final StatisticsService statisticsService; - private final Map previousValues = new HashMap<>(); - - public StatisticsSampler(SessionFactory sessionFactory) { - statisticsService = new StatisticsService(); - statisticsService.setSessionFactory(sessionFactory); - if (!statisticsService.isStatisticsEnabled()) { - statisticsService.setStatisticsEnabled(true); - NewRelic.getAgent().getLogger().log(Level.INFO, "Enabled Hibernate JMX metrics"); - } - - AgentBridge.instrumentation.registerCloseable(Weaver.getImplementationTitle(), - AgentBridge.privateApi.addSampler(this, 10, TimeUnit.SECONDS)); - } - - public void recordStats() { - recordMonoStats(HIBERNATE_STATISTICS + "/entityLoads", statisticsService.getEntityLoadCount()); - recordMonoStats(HIBERNATE_STATISTICS + "/entityFetches", statisticsService.getEntityFetchCount()); - recordMonoStats(HIBERNATE_STATISTICS + "/entityInserts", statisticsService.getEntityInsertCount()); - recordMonoStats(HIBERNATE_STATISTICS + "/entityUpdates", statisticsService.getEntityUpdateCount()); - recordMonoStats(HIBERNATE_STATISTICS + "/entityDeletes", statisticsService.getEntityDeleteCount()); - - recordMonoStats(HIBERNATE_STATISTICS + "/queryCacheHits", statisticsService.getQueryCacheHitCount()); - recordMonoStats(HIBERNATE_STATISTICS + "/queryCacheMisses", statisticsService.getQueryCacheMissCount()); - recordMonoStats(HIBERNATE_STATISTICS + "/queryCachePuts", statisticsService.getQueryCachePutCount()); - recordMonoStats(HIBERNATE_STATISTICS + "/queryExecutions", statisticsService.getQueryExecutionCount()); - - recordMonoStats(HIBERNATE_STATISTICS + "/sessionOpens", statisticsService.getSessionOpenCount()); - recordMonoStats(HIBERNATE_STATISTICS + "/sessionCloses", statisticsService.getSessionCloseCount()); - - recordMonoStats(HIBERNATE_STATISTICS + "/transactions", statisticsService.getTransactionCount()); - recordMonoStats(HIBERNATE_STATISTICS + "/closeStatements", statisticsService.getCloseStatementCount()); - recordMonoStats(HIBERNATE_STATISTICS + "/flushes", statisticsService.getFlushCount()); - - // entity stats - String[] entityNames = statisticsService.getEntityNames(); - for (String name : entityNames) { - /* - * In 3.4.x EntityStatistics is a Class, but in 3.5.x it is an Interface. - */ - EntityStatistics stats = statisticsService.getEntityStatistics(name); - String rootName = ENTITIES + '/' + name + '/'; - try { - recordMonoStats(rootName + "loads", stats.getLoadCount()); - recordMonoStats(rootName + "fetches", stats.getFetchCount()); - recordMonoStats(rootName + "inserts", stats.getInsertCount()); - recordMonoStats(rootName + "updates", stats.getUpdateCount()); - recordMonoStats(rootName + "deletes", stats.getDeleteCount()); - } catch (Exception e) { - String msg = MessageFormat.format("Error in Hibernate StatisticsSampler: {0}", e); - // NewRelic.getAgent().getLogger().log(Level.FINEST, msg, e); - NewRelic.getAgent().getLogger().log(Level.FINE, msg); - } - } - - String[] regionNames = statisticsService.getSecondLevelCacheRegionNames(); - for (String name : regionNames) { - SecondLevelCacheStatistics cacheStatistics = statisticsService.getSecondLevelCacheStatistics(name); - String rootName = SECOND_LEVEL_CACHE + '/' + name + '/'; - recordMonoStats(rootName + "elementsInMemory", cacheStatistics.getElementCountInMemory()); - recordMonoStats(rootName + "elementsOnDisk", cacheStatistics.getElementCountOnDisk()); - recordMonoStats(rootName + "hits", cacheStatistics.getHitCount()); - recordMonoStats(rootName + "misses", cacheStatistics.getMissCount()); - recordMonoStats(rootName + "puts", cacheStatistics.getPutCount()); - } - } - - private void recordMonoStats(String name, float value) { - Float previousValue = previousValues.get(name); - previousValues.put(name, value); - if (previousValue != null) { - value -= previousValue; - } - - NewRelic.recordMetric(name, value); - } - - @Override - public void run() { - try { - recordStats(); - } catch (Exception ex) { - } - } -} diff --git a/instrumentation/hibernate-3.3/src/main/java/org/hibernate/impl/SessionFactoryImpl.java b/instrumentation/hibernate-3.3/src/main/java/org/hibernate/impl/SessionFactoryImpl.java deleted file mode 100644 index a3d12b8bd9..0000000000 --- a/instrumentation/hibernate-3.3/src/main/java/org/hibernate/impl/SessionFactoryImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * - * * Copyright 2020 New Relic Corporation. All rights reserved. - * * SPDX-License-Identifier: Apache-2.0 - * - */ - -package org.hibernate.impl; - -import org.hibernate.SessionFactory; -import org.hibernate.SessionFactoryObserver; -import org.hibernate.cfg.Configuration; -import org.hibernate.cfg.Settings; -import org.hibernate.engine.Mapping; -import org.hibernate.event.EventListeners; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.weaver.Weave; -import com.newrelic.weave.instrumentation.hibernate33.StatisticsSampler; - -@Weave -public abstract class SessionFactoryImpl implements SessionFactory { - - public SessionFactoryImpl(Configuration cfg, Mapping mapping, Settings settings, EventListeners listeners, - SessionFactoryObserver observer) { - if (NewRelic.getAgent().getConfig().getValue("instrumentation.hibernate.stats_sampler.enabled", false)) { - new StatisticsSampler(this); - } - } - -} diff --git a/instrumentation/hibernate-3.3/src/main/java/org/hibernate/impl/SessionImpl.java b/instrumentation/hibernate-3.3/src/main/java/org/hibernate/impl/SessionImpl.java deleted file mode 100644 index 66091deee0..0000000000 --- a/instrumentation/hibernate-3.3/src/main/java/org/hibernate/impl/SessionImpl.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * - * * Copyright 2020 New Relic Corporation. All rights reserved. - * * SPDX-License-Identifier: Apache-2.0 - * - */ - -package org.hibernate.impl; - -import static com.newrelic.api.agent.weaver.Weaver.callOriginal; - -import java.io.Serializable; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.hibernate.HibernateException; -import org.hibernate.LockMode; - -import com.newrelic.api.agent.NewRelic; -import com.newrelic.api.agent.Trace; -import com.newrelic.api.agent.weaver.NewField; -import com.newrelic.api.agent.weaver.Weave; - -@Weave -public abstract class SessionImpl { - - @NewField - private static final String GET = "get"; - @NewField - private static final String REFRESH = "refresh"; - @NewField - private static final String LOAD = "load"; - @NewField - private static final String SAVE = "save"; - @NewField - private static final String DELETE = "delete"; - @NewField - private static final String PERSIST = "persist"; - @NewField - private static final String ORM = "ORM"; - @NewField - private static final String HIBERNATE = "Hibernate"; - - @Trace - public List list(CriteriaImpl criteria) throws HibernateException { - NewRelic.getAgent().getTracedMethod().setMetricName(ORM, HIBERNATE, criteria.getEntityOrClassName(), "list"); - return callOriginal(); - } - - @Trace - public void saveOrUpdate(String entityName, Object object) throws HibernateException { - NewRelic.getAgent().getTracedMethod().setMetricName(ORM, HIBERNATE, getModelName(entityName, object), - "saveOrUpdate"); - callOriginal(); - } - - @Trace - public void update(String entityName, Object object) throws HibernateException { - NewRelic.getAgent().getTracedMethod().setMetricName(ORM, HIBERNATE, getModelName(entityName, object), "update"); - callOriginal(); - } - - @Trace - public Serializable save(String entityName, Object object) throws HibernateException { - NewRelic.getAgent().getTracedMethod().setMetricName(ORM, HIBERNATE, getModelName(entityName, object), SAVE); - return callOriginal(); - } - - @Trace - public void save(String entityName, Object object, Serializable id) throws HibernateException { - NewRelic.getAgent().getTracedMethod().setMetricName(ORM, HIBERNATE, getModelName(entityName, object), SAVE); - callOriginal(); - } - - @Trace - public void persist(String entityName, Object object) throws HibernateException { - NewRelic.getAgent().getTracedMethod().setMetricName(ORM, HIBERNATE, getModelName(entityName, object), PERSIST); - callOriginal(); - } - - @Trace - public void delete(Object object) throws HibernateException { - NewRelic.getAgent().getTracedMethod().setMetricName(ORM, HIBERNATE, object.getClass().getName(), DELETE); - callOriginal(); - } - - @Trace - public void delete(String entityName, Object object) throws HibernateException { - NewRelic.getAgent().getTracedMethod().setMetricName(ORM, HIBERNATE, getModelName(entityName, object), DELETE); - callOriginal(); - } - - @Trace - public void delete(String entityName, Object object, boolean isCascadeDeleteEnabled, Set transientEntities) - throws HibernateException { - NewRelic.getAgent().getTracedMethod().setMetricName(ORM, HIBERNATE, getModelName(entityName, object), DELETE); - callOriginal(); - } - - @Trace - public void load(Object object, Serializable id) throws HibernateException { - callOriginal(); - } - - @Trace - public Object load(String entityName, Serializable id) throws HibernateException { - NewRelic.getAgent().getTracedMethod().setMetricName(ORM, HIBERNATE, entityName, LOAD); - return callOriginal(); - } - - @Trace - public Object get(String entityName, Serializable id) throws HibernateException { - NewRelic.getAgent().getTracedMethod().setMetricName(ORM, HIBERNATE, entityName, GET); - return callOriginal(); - } - - @Trace - public void refresh(Object object) throws HibernateException { - NewRelic.getAgent().getTracedMethod().setMetricName(ORM, HIBERNATE, object.getClass().getName(), REFRESH); - callOriginal(); - } - - @Trace - public void refresh(Object object, LockMode lockMode) throws HibernateException { - NewRelic.getAgent().getTracedMethod().setMetricName(ORM, HIBERNATE, object.getClass().getName(), REFRESH); - callOriginal(); - } - - @Trace - public void refresh(Object object, Map refreshedAlready) throws HibernateException { - NewRelic.getAgent().getTracedMethod().setMetricName(ORM, HIBERNATE, object.getClass().getName(), REFRESH); - callOriginal(); - } - - @Trace - public void flush() { - NewRelic.getAgent().getTracedMethod().setMetricName(HIBERNATE, SessionImpl.class.getName(), "flush"); - callOriginal(); - } - - private static String getModelName(String entityName, Object object) { - if (entityName != null) { - return entityName; - } else { - return object.getClass().getName(); - } - } -} diff --git a/settings.gradle b/settings.gradle index 98de464c6d..dd6ce6a62c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -137,7 +137,6 @@ include 'instrumentation:grpc-1.4.0' include 'instrumentation:grpc-1.22.0' include 'instrumentation:grpc-1.30.0' include 'instrumentation:grpc-1.40.0' -include 'instrumentation:hibernate-3.3' include 'instrumentation:hibernate-3.5' include 'instrumentation:hibernate-4.0' include 'instrumentation:hibernate-4.2'