[fix] 外部调用者可能需要直接使用内部申请的OwnerPacket,所以这里不释放
This commit is contained in:
parent
924229899c
commit
40f7560753
|
@ -1,5 +1,4 @@
|
||||||
using System.Net.Sockets;
|
using NewLife.Log;
|
||||||
using NewLife.Log;
|
|
||||||
using NewLife.Net;
|
using NewLife.Net;
|
||||||
using NewLife.Threading;
|
using NewLife.Threading;
|
||||||
|
|
||||||
|
@ -13,7 +12,7 @@ public class RedisReplication : RedisBase, IRedisCluster, IDisposable
|
||||||
IList<IRedisNode> IRedisCluster.Nodes => Nodes.Select(x => (IRedisNode)x).ToList();
|
IList<IRedisNode> IRedisCluster.Nodes => Nodes.Select(x => (IRedisNode)x).ToList();
|
||||||
|
|
||||||
/// <summary>节点改变事件</summary>
|
/// <summary>节点改变事件</summary>
|
||||||
public event EventHandler NodeChanged;
|
public event EventHandler? NodeChanged;
|
||||||
|
|
||||||
/// <summary>集群节点</summary>
|
/// <summary>集群节点</summary>
|
||||||
public RedisNode[]? Nodes { get; protected set; }
|
public RedisNode[]? Nodes { get; protected set; }
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
using System.Buffers;
|
using System.Buffers;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Net.Security;
|
using System.Net.Security;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using System.Security.Authentication;
|
using System.Security.Authentication;
|
||||||
|
@ -690,8 +689,9 @@ public class RedisClient : DisposeBase
|
||||||
if (rs is TResult rs2) return rs2;
|
if (rs is TResult rs2) return rs2;
|
||||||
if (TryChangeType(rs, typeof(TResult), out var target))
|
if (TryChangeType(rs, typeof(TResult), out var target))
|
||||||
{
|
{
|
||||||
// 释放内部申请的OwnerPacket
|
//!!! 外部调用者可能需要直接使用内部申请的OwnerPacket,所以这里不释放
|
||||||
rs.TryDispose();
|
//// 释放内部申请的OwnerPacket
|
||||||
|
//rs.TryDispose();
|
||||||
return (TResult?)target;
|
return (TResult?)target;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -727,8 +727,9 @@ public class RedisClient : DisposeBase
|
||||||
if (rs == null) return false;
|
if (rs == null) return false;
|
||||||
if (TryChangeType(rs, typeof(TResult), out var target))
|
if (TryChangeType(rs, typeof(TResult), out var target))
|
||||||
{
|
{
|
||||||
// 释放内部申请的OwnerPacket
|
//!!! 外部调用者可能需要直接使用内部申请的OwnerPacket,所以这里不释放
|
||||||
rs.TryDispose();
|
//// 释放内部申请的OwnerPacket
|
||||||
|
//rs.TryDispose();
|
||||||
value = (TResult?)target;
|
value = (TResult?)target;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -788,8 +789,9 @@ public class RedisClient : DisposeBase
|
||||||
if (rs is TResult rs2) return rs2;
|
if (rs is TResult rs2) return rs2;
|
||||||
if (TryChangeType(rs, typeof(TResult), out var target))
|
if (TryChangeType(rs, typeof(TResult), out var target))
|
||||||
{
|
{
|
||||||
// 释放内部申请的OwnerPacket
|
//!!! 外部调用者可能需要直接使用内部申请的OwnerPacket,所以这里不释放
|
||||||
rs.TryDispose();
|
//// 释放内部申请的OwnerPacket
|
||||||
|
//rs.TryDispose();
|
||||||
return (TResult?)target;
|
return (TResult?)target;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -939,8 +941,9 @@ public class RedisClient : DisposeBase
|
||||||
var rs = list[i];
|
var rs = list[i];
|
||||||
if (rs != null && TryChangeType(rs, ps[i].Type, out var target) && target != null)
|
if (rs != null && TryChangeType(rs, ps[i].Type, out var target) && target != null)
|
||||||
{
|
{
|
||||||
// 释放内部申请的OwnerPacket
|
//!!! 外部调用者可能需要直接使用内部申请的OwnerPacket,所以这里不释放
|
||||||
rs.TryDispose();
|
//// 释放内部申请的OwnerPacket
|
||||||
|
//rs.TryDispose();
|
||||||
list[i] = target;
|
list[i] = target;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
|
||||||
using System.Runtime.Intrinsics.Arm;
|
|
||||||
|
|
||||||
using NewLife.Caching;
|
using NewLife.Caching;
|
||||||
using NewLife.Log;
|
using NewLife.Log;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
@ -105,14 +102,20 @@ public class HashTest
|
||||||
var hash = _redis.GetDictionary<EventInfo>(key);
|
var hash = _redis.GetDictionary<EventInfo>(key);
|
||||||
Assert.NotNull(hash);
|
Assert.NotNull(hash);
|
||||||
|
|
||||||
var l = hash as RedisHash<String, String>;
|
var rh = hash as RedisHash<String, EventInfo>;
|
||||||
|
|
||||||
foreach(var item in l.GetAll())
|
foreach (var item in rh.GetAll())
|
||||||
{
|
{
|
||||||
XTrace.WriteLine(item.Key);
|
XTrace.WriteLine(item.Key);
|
||||||
}
|
}
|
||||||
|
|
||||||
l["0"] = "0";
|
rh["0"] = new EventInfo { EventId = "1234", EventName = "Stone" };
|
||||||
|
}
|
||||||
|
|
||||||
|
class EventInfo
|
||||||
|
{
|
||||||
|
public String? EventId { get; set; }
|
||||||
|
public String? EventName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue