public void invalidateSchema(SchemaVersionInfoCache.Key key) { LOG.debug("Invalidating cache entry for key [{}]", key); loadingCache.invalidate(key); SchemaVersionKey schemaVersionKey = key.schemaIdVersion != null ? idWithNameVersion.get(key.schemaIdVersion) : key.schemaVersionKey; // it can be null if it is not accessed earlier. if (schemaVersionKey != null) { loadingCache.invalidate(Key.of(schemaVersionKey)); List<SchemaIdVersion> schemaIdVersions = nameVersionWithIds.get(schemaVersionKey); if(schemaIdVersions != null) { for (SchemaIdVersion schemaIdVersion : schemaIdVersions) { loadingCache.invalidate(Key.of(schemaIdVersion)); } } } }
public void invalidateSchema(SchemaVersionInfoCache.Key key) { LOG.debug("Invalidating cache entry for key [{}]", key); loadingCache.invalidate(key); SchemaVersionKey schemaVersionKey = key.schemaIdVersion != null ? idWithNameVersion.get(key.schemaIdVersion) : key.schemaVersionKey; // it can be null if it is not accessed earlier. if (schemaVersionKey != null) { loadingCache.invalidate(Key.of(schemaVersionKey)); List<SchemaIdVersion> schemaIdVersions = nameVersionWithIds.get(schemaVersionKey); if(schemaIdVersions != null) { for (SchemaIdVersion schemaIdVersion : schemaIdVersions) { loadingCache.invalidate(Key.of(schemaIdVersion)); } } } }
private List<SchemaVersionInfo> getSortedSchemaVersions(Long schemaBranchId) throws SchemaNotFoundException, SchemaBranchNotFoundException { List<QueryParam> schemaVersionMappingStorableQueryParams = Lists.newArrayList(); schemaVersionMappingStorableQueryParams.add(new QueryParam(SchemaBranchVersionMapping.SCHEMA_BRANCH_ID, schemaBranchId .toString())); List<OrderByField> orderByFields = new ArrayList<>(); orderByFields.add(OrderByField.of(SchemaBranchVersionMapping.SCHEMA_VERSION_INFO_ID, false)); List<SchemaVersionInfo> schemaVersionInfos = new ArrayList<>(); Collection<SchemaBranchVersionMapping> storables = storageManager.find(SchemaBranchVersionMapping.NAMESPACE, schemaVersionMappingStorableQueryParams, orderByFields); if (storables == null || storables.size() == 0) { if (schemaBranchCache.get(SchemaBranchCache.Key.of(schemaBranchId)) .getName() .equals(SchemaBranch.MASTER_BRANCH)) return Collections.emptyList(); else throw new InvalidSchemaBranchVersionMapping(String.format("No schema versions are attached to the schema branch id : '%s'", schemaBranchId)); } for (SchemaBranchVersionMapping storable : storables) { SchemaIdVersion schemaIdVersion = new SchemaIdVersion(storable.getSchemaVersionInfoId()); schemaVersionInfos.add(schemaVersionInfoCache.getSchema(SchemaVersionInfoCache.Key.of(schemaIdVersion))); } return schemaVersionInfos; }
private void storeSchemaVersionState(SchemaVersionLifecycleContext schemaVersionLifecycleContext) throws SchemaNotFoundException { // store versions state, sequence SchemaVersionStateStorable stateStorable = new SchemaVersionStateStorable(); Long schemaVersionId = schemaVersionLifecycleContext.getSchemaVersionId(); byte stateId = schemaVersionLifecycleContext.getState().getId(); stateStorable.setSchemaVersionId(schemaVersionId); stateStorable.setSequence(schemaVersionLifecycleContext.getSequence() + 1); stateStorable.setStateId(stateId); stateStorable.setTimestamp(System.currentTimeMillis()); stateStorable.setDetails(schemaVersionLifecycleContext.getDetails()); stateStorable.setId(storageManager.nextId(SchemaVersionStateStorable.NAME_SPACE)); storageManager.add(stateStorable); // store latest state in versions entity StorableKey storableKey = new StorableKey(SchemaVersionStorable.NAME_SPACE, SchemaVersionStorable.getPrimaryKey(schemaVersionId)); SchemaVersionStorable versionedSchema = storageManager.get(storableKey); if (versionedSchema == null) { throw new SchemaNotFoundException("No Schema version exists with id " + schemaVersionId); } versionedSchema.setState(stateId); storageManager.update(versionedSchema); // invalidate schema version from cache SchemaVersionInfoCache.Key schemaVersionCacheKey = SchemaVersionInfoCache.Key.of(new SchemaIdVersion(schemaVersionId)); invalidateSchemaInAllHAServer(schemaVersionCacheKey); }
private boolean transitionSchemaVersionState(Long schemaVersionId, String operationOrTargetState, byte[] transitionDetails) throws SchemaNotFoundException, SchemaLifecycleException { WebTarget webTarget = currentSchemaRegistryTargets().schemaVersionsTarget.path(schemaVersionId + "/state/" + operationOrTargetState); Response response = Subject.doAs(subject, new PrivilegedAction<Response>() { @Override public Response run() { return webTarget.request().post(Entity.text(transitionDetails)); } }); boolean result = handleSchemaLifeCycleResponse(response); // invalidate this entry from cache. schemaVersionInfoCache.invalidateSchema(SchemaVersionInfoCache.Key.of(new SchemaIdVersion(schemaVersionId))); return result; }
public SchemaVersionInfo getSchemaVersionInfo(SchemaVersionKey schemaVersionKey) throws SchemaNotFoundException { return schemaVersionInfoCache.getSchema(SchemaVersionInfoCache.Key.of(schemaVersionKey)); }
public SchemaVersionInfo getSchemaVersionInfo(SchemaIdVersion schemaIdVersion) throws SchemaNotFoundException { return schemaVersionInfoCache.getSchema(SchemaVersionInfoCache.Key.of(schemaIdVersion)); }
private void doDeleteSchemaVersion(Long schemaVersionId) throws SchemaNotFoundException, SchemaLifecycleException { SchemaVersionInfoCache.Key schemaVersionCacheKey = SchemaVersionInfoCache.Key.of(new SchemaIdVersion(schemaVersionId)); invalidateSchemaInAllHAServer(schemaVersionCacheKey); storageManager.remove(createSchemaVersionStorableKey(schemaVersionId)); deleteSchemaVersionBranchMapping(schemaVersionId); }
@Override public SchemaVersionInfo getSchemaVersionInfo(SchemaVersionKey schemaVersionKey) throws SchemaNotFoundException { try { return schemaVersionInfoCache.getSchema(SchemaVersionInfoCache.Key.of(schemaVersionKey)); } catch (SchemaNotFoundException ex) { throw ex; } catch (Exception ex) { throw new RuntimeException(ex); } }
public SchemaVersionInfo getSchemaVersionInfo(SchemaIdVersion schemaIdVersion) throws SchemaNotFoundException { try { return schemaVersionInfoCache.getSchema(SchemaVersionInfoCache.Key.of(schemaIdVersion)); } catch (SchemaNotFoundException ex) { throw ex; } catch (Exception ex) { throw new RuntimeException(ex); } }