Search in sources :

Example 16 with Datum

use of com.alibaba.nacos.naming.consistency.Datum in project nacos by alibaba.

the class BasePersistentServiceProcessor method publishValueChangeEvent.

private void publishValueChangeEvent(final Op op, final BatchWriteRequest request) {
    final List<byte[]> keys = request.getKeys();
    final List<byte[]> values = request.getValues();
    for (int i = 0; i < keys.size(); i++) {
        final String key = new String(keys.get(i));
        final Datum datum = serializer.deserialize(values.get(i), getDatumTypeFromKey(key));
        final Record value = null != datum ? datum.value : null;
        final ValueChangeEvent event = ValueChangeEvent.builder().key(key).value(value).action(Op.Delete.equals(op) ? DataOperation.DELETE : DataOperation.CHANGE).build();
        NotifyCenter.publishEvent(event);
    }
}
Also used : ValueChangeEvent(com.alibaba.nacos.naming.consistency.ValueChangeEvent) Datum(com.alibaba.nacos.naming.consistency.Datum) Record(com.alibaba.nacos.naming.pojo.Record) ByteString(com.google.protobuf.ByteString)

Example 17 with Datum

use of com.alibaba.nacos.naming.consistency.Datum in project nacos by alibaba.

the class PersistentServiceProcessor method put.

@Override
public void put(String key, Record value) throws NacosException {
    final BatchWriteRequest req = new BatchWriteRequest();
    Datum datum = Datum.createDatum(key, value);
    req.append(ByteUtils.toBytes(key), serializer.serialize(datum));
    final WriteRequest request = WriteRequest.newBuilder().setData(ByteString.copyFrom(serializer.serialize(req))).setGroup(Constants.NAMING_PERSISTENT_SERVICE_GROUP).setOperation(Op.Write.desc).build();
    try {
        protocol.write(request);
    } catch (Exception e) {
        throw new NacosException(ErrorCode.ProtoSubmitError.getCode(), e.getMessage());
    }
}
Also used : Datum(com.alibaba.nacos.naming.consistency.Datum) WriteRequest(com.alibaba.nacos.consistency.entity.WriteRequest) NacosException(com.alibaba.nacos.api.exception.NacosException) NacosException(com.alibaba.nacos.api.exception.NacosException)

Example 18 with Datum

use of com.alibaba.nacos.naming.consistency.Datum in project nacos by alibaba.

the class StandalonePersistentServiceProcessor method put.

@Override
public void put(String key, Record value) throws NacosException {
    final BatchWriteRequest req = new BatchWriteRequest();
    Datum datum = Datum.createDatum(key, value);
    req.append(ByteUtils.toBytes(key), serializer.serialize(datum));
    final WriteRequest request = WriteRequest.newBuilder().setData(ByteString.copyFrom(serializer.serialize(req))).setGroup(Constants.NAMING_PERSISTENT_SERVICE_GROUP).setOperation(Op.Write.desc).build();
    try {
        onApply(request);
    } catch (Exception e) {
        throw new NacosException(ErrorCode.ProtoSubmitError.getCode(), e.getMessage());
    }
}
Also used : Datum(com.alibaba.nacos.naming.consistency.Datum) WriteRequest(com.alibaba.nacos.consistency.entity.WriteRequest) NacosException(com.alibaba.nacos.api.exception.NacosException) NacosException(com.alibaba.nacos.api.exception.NacosException)

Example 19 with Datum

use of com.alibaba.nacos.naming.consistency.Datum in project nacos by alibaba.

the class DataStore method batchGet.

/**
 * Batch get datum for a list of keys.
 *
 * @param keys of datum
 * @return list of datum
 */
public Map<String, Datum> batchGet(List<String> keys) {
    Map<String, Datum> map = new HashMap<>(128);
    for (String key : keys) {
        Datum datum = dataMap.get(key);
        if (datum == null) {
            continue;
        }
        map.put(key, datum);
    }
    return map;
}
Also used : Datum(com.alibaba.nacos.naming.consistency.Datum) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap)

Example 20 with Datum

use of com.alibaba.nacos.naming.consistency.Datum in project nacos by alibaba.

the class DistroControllerTest method testOnSyncDatum.

@Test
public void testOnSyncDatum() {
    Map<String, Datum<Instances>> dataMap = new HashMap<>();
    try {
        distroController.onSyncDatum(dataMap);
    } catch (Exception e) {
        Assert.assertTrue(e instanceof NacosException);
        NacosException exception = (NacosException) e;
        Assert.assertEquals(NacosException.INVALID_PARAM, exception.getErrCode());
    }
    dataMap.put("test", new Datum<>());
    try {
        ResponseEntity responseEntity = distroController.onSyncDatum(dataMap);
        Assert.assertEquals("ok", responseEntity.getBody());
    } catch (Exception e) {
        e.printStackTrace();
        Assert.fail(e.getMessage());
    }
}
Also used : ResponseEntity(org.springframework.http.ResponseEntity) Datum(com.alibaba.nacos.naming.consistency.Datum) HashMap(java.util.HashMap) NacosException(com.alibaba.nacos.api.exception.NacosException) NacosException(com.alibaba.nacos.api.exception.NacosException) Test(org.junit.Test)

Aggregations

Datum (com.alibaba.nacos.naming.consistency.Datum)29 NacosException (com.alibaba.nacos.api.exception.NacosException)10 HashMap (java.util.HashMap)10 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)6 Test (org.junit.Test)6 Instances (com.alibaba.nacos.naming.core.Instances)5 Instance (com.alibaba.nacos.naming.core.Instance)4 JsonNode (com.fasterxml.jackson.databind.JsonNode)4 IOException (java.io.IOException)4 UnsupportedEncodingException (java.io.UnsupportedEncodingException)4 ArrayList (java.util.ArrayList)4 NacosRuntimeException (com.alibaba.nacos.api.exception.runtime.NacosRuntimeException)3 DistroData (com.alibaba.nacos.core.distributed.distro.entity.DistroData)3 BaseTest (com.alibaba.nacos.naming.BaseTest)3 Service (com.alibaba.nacos.naming.core.Service)3 TypeReference (com.fasterxml.jackson.core.type.TypeReference)3 Map (java.util.Map)3 WriteRequest (com.alibaba.nacos.consistency.entity.WriteRequest)2 DistroKey (com.alibaba.nacos.core.distributed.distro.entity.DistroKey)2 Serializer (com.alibaba.nacos.naming.cluster.transport.Serializer)2