ShardUtils
ShardUtils es un servicio Spring que proporciona métodos para gestionar la configuración de shards de OpenKM. Los shards permiten distribuir el repositorio de documentos entre varios discos físicos o directorios. Acceda a él mediante ContextWrapper.getContext().getBean(ShardUtils.class) o inyéctelo con @Autowired.
Configuración de shards
Sección titulada «Configuración de shards»setCurrentShard
Sección titulada «setCurrentShard»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| setCurrentShard(Long shardId) | void | Establece el shard activo con el ID de shard dado. Actualiza la configuración en la base de datos y la recarga en todo el clúster si el clustering está habilitado. Lanza RepositoryException si el ID de shard no está registrado. |
Ejemplo:
package com.openkm;
import com.openkm.util.ContextWrapper;import com.openkm.util.ShardUtils;
public class Test {
public static void main(String[] args) { try { ShardUtils shardUtils = ContextWrapper.getContext().getBean(ShardUtils.class); shardUtils.setCurrentShard(1L); } catch (Exception e) { e.printStackTrace(); } }}createShardDirs
Sección titulada «createShardDirs»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| createShardDirs(Long shardId) | void | Crea los directorios de almacenamiento necesarios para el ID de shard dado en todos los tenants. Debe llamarse tras registrar un nuevo shard en la base de datos. Lanza RuntimeException si falla la creación del directorio. |
Ejemplo:
package com.openkm;
import com.openkm.util.ContextWrapper;import com.openkm.util.ShardUtils;
public class Test {
public static void main(String[] args) { try { ShardUtils shardUtils = ContextWrapper.getContext().getBean(ShardUtils.class); shardUtils.createShardDirs(2L); } catch (Exception e) { e.printStackTrace(); } }}Mover nodos entre shards
Sección titulada «Mover nodos entre shards»changeNodeShard
Sección titulada «changeNodeShard»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| changeNodeShard(String uuid, Long newShardId) | void | Mueve el contenido físico del nodo de repositorio dado al shard de destino. El comportamiento varía según el tipo de nodo: - Document: mueve todos los ficheros de contenido de versión y el fichero de extracción de texto. - Mail: mueve el contenido de correo en bruto, el fichero de extracción y todos los nodos hijos adjuntos de forma recursiva. - Folder / Record: aplica el movimiento de forma recursiva a todos los nodos hijos. Lanza RepositoryException si el shard de destino no está registrado. Lanza IOException si falla algún movimiento de fichero. |
- uuid: el UUID del documento, carpeta, correo o registro a mover.
- newShardId: el ID del shard de destino.
Ejemplo:
package com.openkm;
import com.openkm.util.ContextWrapper;import com.openkm.util.ShardUtils;
public class Test {
public static void main(String[] args) { try { ShardUtils shardUtils = ContextWrapper.getContext().getBean(ShardUtils.class); shardUtils.changeNodeShard("e2391b01-ce10-42c7-94a9-b0d6b394048e", 2L); } catch (Exception e) { e.printStackTrace(); } }}Consultar shards
Sección titulada «Consultar shards»getShardIds
Sección titulada «getShardIds»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getShardIds() | List |
Devuelve la lista de todos los IDs de shard registrados. |
getShardSize
Sección titulada «getShardSize»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getShardSize(Long shardId) | Long | Devuelve el tamaño total en bytes de todo el contenido almacenado en el shard dado, en todos los tenants. Lanza DatabaseException si no se pueden recuperar los datos del tenant. |
getShardPaths
Sección titulada «getShardPaths»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getShardPaths(Long shardId) | List |
Devuelve la lista de rutas absolutas del sistema de ficheros para el shard dado, una por tenant. Lanza DatabaseException si no se pueden recuperar los datos del tenant. |
getShards
Sección titulada «getShards»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getShards() | List |
Devuelve la lista de todas las entidades Shard registradas en la base de datos. |
getShardFolders
Sección titulada «getShardFolders»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getShardFolders() | List |
Devuelve la lista de directorios de shard encontrados bajo Config.REPOSITORY_HOME. Los directorios se identifican por el prefijo de shard configurado y se devuelven ordenados alfabéticamente. |
Ejemplo:
package com.openkm;
import com.openkm.db.bean.Shard;import com.openkm.util.ContextWrapper;import com.openkm.util.ShardUtils;
import java.io.File;import java.util.List;
public class Test {
public static void main(String[] args) { try { ShardUtils shardUtils = ContextWrapper.getContext().getBean(ShardUtils.class);
System.out.println("Shard IDs: " + shardUtils.getShardIds());
for (long id : shardUtils.getShardIds()) { System.out.println("Shard " + id + " size: " + shardUtils.getShardSize(id) + " bytes"); System.out.println("Shard " + id + " paths: " + shardUtils.getShardPaths(id)); }
List<Shard> shards = shardUtils.getShards(); for (Shard shard : shards) { System.out.println(shard); }
List<File> folders = shardUtils.getShardFolders(); for (File f : folders) { System.out.println(f.getPath()); } } catch (Exception e) { e.printStackTrace(); } }}