Skip to content

Commit 81a0c63

Browse files
committed
Fix Cache update
1 parent 4e86810 commit 81a0c63

7 files changed

Lines changed: 75 additions & 55 deletions

File tree

knowage-core/src/main/java/it/eng/spagobi/tools/dataset/cache/ICacheMetadata.java

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,18 @@
1717
*/
1818
package it.eng.spagobi.tools.dataset.cache;
1919

20-
import it.eng.spagobi.tools.dataset.common.datastore.IDataStore;
21-
import it.eng.spagobi.tools.datasource.bo.IDataSource;
22-
import it.eng.spagobi.utilities.cache.CacheItem;
23-
import it.eng.spagobi.utilities.database.DataBaseException;
24-
import org.json.JSONArray;
25-
2620
import java.math.BigDecimal;
2721
import java.util.List;
2822
import java.util.Map;
2923
import java.util.Set;
3024

25+
import org.json.JSONArray;
26+
27+
import it.eng.spagobi.tools.dataset.common.datastore.IDataStore;
28+
import it.eng.spagobi.tools.datasource.bo.IDataSource;
29+
import it.eng.spagobi.utilities.cache.CacheItem;
30+
import it.eng.spagobi.utilities.database.DataBaseException;
31+
3132
/**
3233
* @author Marco Cortella (marco.cortella@eng.it) Antonella Giachino (antonella.giachino@eng.it)
3334
*
@@ -89,7 +90,7 @@ public interface ICacheMetadata {
8990
*
9091
* @return The signatures of all cached objects ordered by insertion order (FIFO)
9192
*/
92-
List<String> getSignatures();
93+
List<String> getSignatures(boolean disableTenantFilter);
9394

9495
void addCacheItem(String dataSetName, String resultsetSignature, Map<String, Object> properties,
9596
String tableName, IDataStore resultset, JSONArray parameters);
@@ -99,45 +100,45 @@ void addCacheItem(String dataSetName, String resultsetSignature, Map<String, Obj
99100
/**
100101
* add a cacheItem
101102
*/
102-
public void addCacheItem(String dataSetName, String resultsetSignature, Map<String, Object> properties, String tableName, BigDecimal dimension, JSONArray parameters);
103+
void addCacheItem(String dataSetName, String resultsetSignature, Map<String, Object> properties, String tableName, BigDecimal dimension, JSONArray parameters);
103104
/**
104105
* update the cacheItem
105106
*/
106-
public void updateCacheItem(CacheItem cacheItem);
107+
void updateCacheItem(CacheItem cacheItem);
107108

108109
/**
109110
* update all cacheItems
110111
*/
111-
public void updateAllCacheItems(IDataSource dataSource);
112+
void updateAllCacheItems(IDataSource dataSource);
112113

113114
/**
114115
* remove the cacheItem
115116
* @return Table names of the removed cache items
116117
*/
117-
public Set<String> removeCacheItem(String signature);
118+
Set<String> removeCacheItem(String signature);
118119

119120
/**
120121
* remove all the cacheItems
121122
*/
122-
public void removeAllCacheItems();
123+
void removeAllCacheItems();
123124

124125
/**
125126
* @return the cache item getted by resultset signature
126127
*/
127-
public CacheItem getCacheItem(String resultSetSignature);
128+
CacheItem getCacheItem(String resultSetSignature);
128129

129130
/**
130131
* @return get all the cacheItems
131132
*/
132-
public List<CacheItem> getAllCacheItems();
133+
List<CacheItem> getAllCacheItems();
133134

134135
/**
135136
* @return true if the resultsetSignature already esists
136137
*/
137-
public boolean containsCacheItem(String resultSetSignature);
138+
boolean containsCacheItem(String resultSetSignature);
138139

139140
/**
140141
* @return the number of the objects cached
141142
*/
142-
public Integer getNumberOfObjects();
143+
Integer getNumberOfObjects();
143144
}

knowage-core/src/main/java/it/eng/spagobi/tools/dataset/cache/impl/sqldbcache/SQLDBCache.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -769,7 +769,7 @@ public boolean update(String signature, boolean isHash) {
769769
if (t instanceof CacheException) {
770770
throw (CacheException) t;
771771
} else {
772-
throw new CacheException("An unexpected error occure while deleting dataset [" + signature + "] from cache", t);
772+
throw new CacheException("An unexpected error occure while updating dataset [" + signature + "] from cache", t);
773773
}
774774
} finally {
775775
logger.debug("OUT");
@@ -915,7 +915,7 @@ public void deleteToQuota() {
915915
String lastCachedItem = null;
916916
if (!isEnough) {
917917
lastCachedItem = getLastCachedItem().getSignature();
918-
for (String signature : getMetadata().getSignatures()) {
918+
for (String signature : getMetadata().getSignatures(true)) {
919919
if (!signature.equals(lastCachedItem)) {
920920
delete(signature, true);
921921
if (getMetadata().getAvailableMemoryAsPercentage() > getMetadata().getCleaningQuota()) {
@@ -947,7 +947,7 @@ public void deleteToQuota() {
947947
public void deleteAll() {
948948
logger.debug("Removing all tables from [SQLDBCache]");
949949

950-
List<String> signatures = getMetadata().getSignatures();
950+
List<String> signatures = getMetadata().getSignatures(false);
951951
for (String signature : signatures) {
952952
delete(signature, true);
953953
}
@@ -960,7 +960,7 @@ public void deleteAll() {
960960
public void updateAll() {
961961
logger.debug("Update all tables from [SQLDBCache]");
962962

963-
List<String> signatures = getMetadata().getSignatures();
963+
List<String> signatures = getMetadata().getSignatures(false);
964964
for (String signature : signatures) {
965965
update(signature, true);
966966
}

knowage-core/src/main/java/it/eng/spagobi/tools/dataset/cache/impl/sqldbcache/SQLDBCacheMetadata.java

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,23 @@
1717
*/
1818
package it.eng.spagobi.tools.dataset.cache.impl.sqldbcache;
1919

20+
import java.math.BigDecimal;
21+
import java.math.RoundingMode;
22+
import java.util.ArrayList;
23+
import java.util.Collections;
24+
import java.util.Date;
25+
import java.util.HashMap;
26+
import java.util.List;
27+
import java.util.Map;
28+
import java.util.Set;
29+
import java.util.stream.Collectors;
30+
31+
import org.apache.commons.lang3.StringUtils;
32+
import org.apache.log4j.Logger;
33+
import org.json.JSONArray;
34+
2035
import com.hazelcast.map.IMap;
36+
2137
import it.eng.spagobi.cache.dao.ICacheDAO;
2238
import it.eng.spagobi.cache.metadata.SbiCacheItem;
2339
import it.eng.spagobi.commons.constants.SpagoBIConstants;
@@ -34,14 +50,6 @@
3450
import it.eng.spagobi.utilities.database.DatabaseUtilities;
3551
import it.eng.spagobi.utilities.exceptions.SpagoBIRuntimeException;
3652
import it.eng.spagobi.utilities.locks.DistributedLockFactory;
37-
import org.apache.commons.lang3.StringUtils;
38-
import org.apache.log4j.Logger;
39-
import org.json.JSONArray;
40-
41-
import java.math.BigDecimal;
42-
import java.math.RoundingMode;
43-
import java.util.*;
44-
import java.util.stream.Collectors;
4553

4654
/**
4755
* @author Antonella Giachino (antonella.giachino@eng.it)
@@ -120,8 +128,9 @@ public BigDecimal getUsedMemory() throws DataBaseException {
120128
public BigDecimal getAvailableMemory() throws DataBaseException {
121129
BigDecimal availableMemory = getTotalMemory();
122130
BigDecimal usedMemory = getUsedMemory();
123-
if (usedMemory != null)
131+
if (usedMemory != null) {
124132
availableMemory = availableMemory.subtract(usedMemory);
133+
}
125134
logger.debug("Available memory is equal to [" + availableMemory + "]");
126135
return availableMemory;
127136
}
@@ -146,7 +155,7 @@ public Integer getAvailableMemoryAsPercentage() throws DataBaseException {
146155

147156
@Override
148157
public Integer getNumberOfObjects() {
149-
return cacheDao.loadAllCacheItems().size();
158+
return cacheDao.loadAllCacheItems(true).size();
150159
}
151160

152161
@Override
@@ -189,7 +198,7 @@ public boolean hasEnoughMemoryForStore(IDataStore store) throws DataBaseExceptio
189198
}
190199

191200
public List<CacheItem> getCacheItems() {
192-
return cacheDao.loadAllCacheItems();
201+
return cacheDao.loadAllCacheItems(true);
193202
}
194203

195204
@Override
@@ -408,9 +417,9 @@ public boolean containsCacheItem(String signature, boolean isHash) {
408417
*/
409418

410419
@Override
411-
public List<String> getSignatures() {
420+
public List<String> getSignatures(boolean disableTenantFilter) {
412421
List<String> signatures = new ArrayList<>();
413-
List<CacheItem> cacheItems = cacheDao.loadAllCacheItems();
422+
List<CacheItem> cacheItems = cacheDao.loadAllCacheItems(disableTenantFilter);
414423
for (CacheItem item : cacheItems) {
415424
signatures.add(item.getSignature());
416425
}
@@ -419,7 +428,7 @@ public List<String> getSignatures() {
419428

420429
@Override
421430
public List<CacheItem> getAllCacheItems() {
422-
return cacheDao.loadAllCacheItems();
431+
return cacheDao.loadAllCacheItems(true);
423432
}
424433

425434
public String getTableNamePrefix() {

knowagedao/src/main/java/it/eng/spagobi/cache/dao/CacheDAOHibImpl.java

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,28 @@
1818

1919
package it.eng.spagobi.cache.dao;
2020

21-
import com.fasterxml.jackson.core.type.TypeReference;
22-
import com.fasterxml.jackson.databind.ObjectMapper;
23-
import it.eng.spagobi.cache.metadata.SbiCacheItem;
24-
import it.eng.spagobi.commons.dao.AbstractHibernateDAO;
25-
import it.eng.spagobi.commons.dao.SpagoBIDAOException;
26-
import it.eng.spagobi.utilities.assertion.Assert;
27-
import it.eng.spagobi.utilities.cache.CacheItem;
21+
import java.math.BigDecimal;
22+
import java.util.ArrayList;
23+
import java.util.Collections;
24+
import java.util.HashMap;
25+
import java.util.Iterator;
26+
import java.util.List;
27+
2828
import org.apache.log4j.Logger;
2929
import org.hibernate.Query;
3030
import org.hibernate.Session;
3131
import org.hibernate.Transaction;
3232
import org.json.JSONArray;
3333
import org.json.JSONException;
3434

35-
import java.math.BigDecimal;
36-
import java.util.*;
35+
import com.fasterxml.jackson.core.type.TypeReference;
36+
import com.fasterxml.jackson.databind.ObjectMapper;
37+
38+
import it.eng.spagobi.cache.metadata.SbiCacheItem;
39+
import it.eng.spagobi.commons.dao.AbstractHibernateDAO;
40+
import it.eng.spagobi.commons.dao.SpagoBIDAOException;
41+
import it.eng.spagobi.utilities.assertion.Assert;
42+
import it.eng.spagobi.utilities.cache.CacheItem;
3743

3844
/**
3945
* @author Alessandro Portosa (alessandro.portosa@eng.it)
@@ -48,7 +54,7 @@ public class CacheDAOHibImpl extends AbstractHibernateDAO implements ICacheDAO {
4854
// ========================================================================================
4955

5056
@Override
51-
public List<CacheItem> loadAllCacheItems() {
57+
public List<CacheItem> loadAllCacheItems(boolean disableTenantFilter) {
5258
logger.debug("IN");
5359

5460
List<CacheItem> toReturn = new ArrayList<>();
@@ -58,6 +64,10 @@ public List<CacheItem> loadAllCacheItems() {
5864
session = getSession();
5965
transaction = session.beginTransaction();
6066

67+
if (disableTenantFilter) {
68+
this.disableTenantFilter(session);
69+
}
70+
6171
Query hibQuery = session.createQuery("from SbiCacheItem");
6272
List<SbiCacheItem> hibList = hibQuery.list();
6373
Iterator<SbiCacheItem> it = hibList.iterator();
@@ -196,7 +206,7 @@ public List<CacheItem> loadCacheItemsByDatasetName(String datasetName) {
196206

197207
Query hibQuery = session.createQuery("from SbiCacheItem ci where ci.name = ?");
198208
hibQuery.setString(0, datasetName);
199-
List<SbiCacheItem> hibMap = (List<SbiCacheItem>) hibQuery.list();
209+
List<SbiCacheItem> hibMap = hibQuery.list();
200210
if (hibMap != null) {
201211
for (SbiCacheItem sbiCacheItem: hibMap) {
202212
toReturn.add(toCacheItem(sbiCacheItem));

knowagedao/src/main/java/it/eng/spagobi/cache/dao/ICacheDAO.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,21 @@ public interface ICacheDAO extends ISpagoBIDao {
3434
// READ operations (cRud)
3535
// ========================================================================================
3636

37-
public List<CacheItem> loadAllCacheItems();
37+
List<CacheItem> loadAllCacheItems(boolean disableTenantFilter);
3838

39-
public CacheItem loadCacheItemByTableName(String tableName);
39+
CacheItem loadCacheItemByTableName(String tableName);
4040

41-
public CacheItem loadCacheItemBySignature(String signature);
41+
CacheItem loadCacheItemBySignature(String signature);
4242

4343
List<CacheItem> loadCacheItemsByDatasetName(String datasetName);
4444

4545
// ========================================================================================
4646
// CREATE operations (Crud)
4747
// ========================================================================================
4848

49-
public String insertCacheItem(CacheItem cacheItem);
49+
String insertCacheItem(CacheItem cacheItem);
5050

51-
public void updateCacheItem(CacheItem cacheItem);
51+
void updateCacheItem(CacheItem cacheItem);
5252

5353
// ========================================================================================
5454
// DELETE operations (cruD)
@@ -57,15 +57,15 @@ public interface ICacheDAO extends ISpagoBIDao {
5757
/**
5858
* @return {@link SbiCacheItem} instances of the removed cache items
5959
*/
60-
public List<SbiCacheItem> deleteCacheItemByTableName(String tableName);
60+
List<SbiCacheItem> deleteCacheItemByTableName(String tableName);
6161

6262
/**
6363
* @return {@link SbiCacheItem} instances of the removed cache items
6464
*/
65-
public List<SbiCacheItem> deleteCacheItemBySignature(String signature);
65+
List<SbiCacheItem> deleteCacheItemBySignature(String signature);
6666

6767
/**
6868
* @return {@link SbiCacheItem} instances of the removed cache items
6969
*/
70-
public List<SbiCacheItem> deleteAllCacheItem();
70+
List<SbiCacheItem> deleteAllCacheItem();
7171
}

knowagedao/src/main/resources/it/eng/spagobi/cache/metadata/mapping/SbiCacheItem.hbm.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
<column name="TABLE_NAME" length="100" not-null="true" unique="true" />
4545
</property>
4646
<property name="name" type="string">
47-
<column name="NAME" length="65535" not-null="true" />
47+
<column name="NAME" length="50" not-null="true" />
4848
</property>
4949
<property name="dimension" type="java.lang.Long">
5050
<column name="DIMENSION" precision="10" scale="0" />

knowageutils/src/main/java/it/eng/spagobi/tools/dataset/persist/PersistedTableManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ public void persist(IDataSet dataSet, IDataSource datasource, String tableName)
189189
LOGGER.debug("Committing inserts...");
190190
connection.commit();
191191
} catch (Exception e) {
192-
LOGGER.error("Error while trasferring data from source to cache");
192+
LOGGER.error("Error while trasferring data from source to cache " + e);
193193
if (connection != null) {
194194
connection.rollback();
195195
}

0 commit comments

Comments
 (0)